Commit graph

6920 commits

Author SHA1 Message Date
Richard Feldman
1e2083e804
Merge remote-tracking branch 'origin/trunk' into gui-example 2022-02-24 18:11:18 -05:00
Brendan Hansknecht
c327681ebc Wasmer: use cranelift for non-x86_64 since singlepass is not supported 2022-02-24 10:31:21 -08:00
Richard Feldman
7179f87536
Merge pull request #2569 from rtfeldman/simplify-pattern-constraint-generation
Simplify pattern constraint generation
2022-02-24 07:28:17 -05:00
ayazhafiz
f8c7349193 Simplify pattern constraint generation
At the time we introduced presence constraints for tag unions, I added a
"destruct_position" variable so that we didn't change the typechecking
semantics for everything all at once, and because I wasn't totally sure
what I was doing was correct. But now we're more confident in this
approach, and every pattern is by definition a destructuring, so there
is no need for this flag.

Also should fix some potential bugs we didn't notice before with presence
constraints in closure variables, though I can't find a good test to
reproduce this, since closure variables are hidden from the user.
2022-02-24 01:08:18 -05:00
Tom Dohrmann
0169a6c579
Merge pull request #2561 from rtfeldman/remove-capacity-from-roc_std
reimplement `RocList` and `RocStr`
2022-02-24 05:42:10 +01:00
Richard Feldman
655373dbe7
Merge remote-tracking branch 'origin/trunk' into gui-example 2022-02-23 21:25:01 -05:00
Richard Feldman
0d037f2204
Appease clippy 2022-02-23 21:19:02 -05:00
Folkert de Vries
3066aef1b7
Merge pull request #2550 from rtfeldman/improve-link-lib64
[Enhancement] Improve library lookup in native linker
2022-02-23 23:25:33 +01:00
Tom Dohrmann
788c8a6af2 reimplement RocList and RocStr 2022-02-23 16:02:13 +01:00
Brian Carroll
b327418a6a Merge branch 'trunk' of github.com:rtfeldman/roc into wasm-specializations 2022-02-22 23:48:30 +00:00
Brian Carroll
ce6d5b1727 mono: Fix recursive union arg layout for calls to helper functions 2022-02-22 23:42:48 +00:00
Anton-4
8fee48c3fa
windows zig path validation workaround
std::fs::canonicalize adds a special windows prefix ?, zig erroneously (ziglang/zig#1509) does not allow ? in windows paths, dunce correctly removes this ? prefix
2022-02-22 16:17:21 +01:00
hafiz
2ff50333ff
Merge pull request #2556 from rtfeldman/2533-review
#2533 review
2022-02-22 00:21:01 -05:00
Richard Feldman
91169a47f5
Merge pull request #2553 from rtfeldman/roc-link-flags
Read ROC_LINK_FLAGS env var to inject more link flags
2022-02-22 00:07:32 -05:00
ayazhafiz
e420ebd023 Add TODOs for opaque type comments that will need to be changed later 2022-02-21 23:21:39 -05:00
hafiz
ca9ecbea52
Merge pull request #2533 from rtfeldman/abilities!
[WIP] Spike for abilities and friends
2022-02-21 23:18:40 -05:00
Richard Feldman
7dc92fe6f4
clippy 2022-02-21 22:15:24 -05:00
Richard Feldman
afa8d228ef
cargo fmt 2022-02-21 20:35:29 -05:00
Brian J. Cardiff
b27eee7f6b Read ROC_LINK_FLAGS env var to inject more link flags
Flags should not contain whitespaces since the value is split on them
Update compiler/build/src/link.rs

Co-authored-by: Richard Feldman <oss@rtfeldman.com>
2022-02-21 21:29:58 -03:00
ayazhafiz
075c5b3eee Typo 2022-02-21 18:36:28 -05:00
ayazhafiz
90de82e295 Validation of opaques during canonicalization 2022-02-21 18:25:19 -05:00
Brian Carroll
3952a7cc7c test_gen: Add comments to some extremely subtle test code 2022-02-21 22:52:50 +00:00
Brian Carroll
89b8926d27 gen_wasm: fix bug choosing the right proc specialization (#2549) 2022-02-21 22:52:45 +00:00
Emi Simpson
b5b26eabc9
Amend ff0c994: 🐛 Search the /lib/<arch> directory 2022-02-21 17:18:11 -05:00
Emi Simpson
97b99e7cfb
Amend ff0c994: 🐛 Re-add support for Rust < 0.58 2022-02-21 15:34:55 -05:00
ayazhafiz
2151e715dd Fix rebased compile error 2022-02-21 14:12:49 -05:00
ayazhafiz
dd2b3097e1 Disable WASM test for now 2022-02-21 14:10:46 -05:00
ayazhafiz
395e0a33e0 Make sure unit structs are always units 2022-02-21 14:10:46 -05:00
ayazhafiz
148dbb4efe Unnecessary reference 2022-02-21 14:10:46 -05:00
ayazhafiz
475be2363c Add a gen test for #2535 2022-02-21 14:10:46 -05:00
ayazhafiz
dfc384aa1f Make mono test output prettier 2022-02-21 14:10:45 -05:00
ayazhafiz
e52d427ac8 Hash record field name order in generated layouts
Closes #2535

See the referenced issue for longer discussion - here's the synopsis.
Consider this program

```
app "test" provides [ nums ] to "./platform"

alpha = { a: 1, b: 2 }

nums : List U8
nums =
    [
        alpha.a,
        alpha.b,
    ]
```

Here's its IR:

```
procedure : `#UserApp.alpha` {I64, U8}
procedure = `#UserApp.alpha` ():
    let `#UserApp.5` : Builtin(Int(I64)) = 1i64;
    let `#UserApp.6` : Builtin(Int(U8)) = 2i64;
    let `#UserApp.4` : Struct([Builtin(Int(I64)), Builtin(Int(U8))]) = Struct {`#UserApp.5`, `#UserApp.6`};
    ret `#UserApp.4`;

procedure : `#UserApp.nums` List U8
procedure = `#UserApp.nums` ():
    let `#UserApp.7` : Struct([Builtin(Int(I64)), Builtin(Int(U8))]) = CallByName `#UserApp.alpha`;
    let `#UserApp.1` : Builtin(Int(U8)) = StructAtIndex 1 `#UserApp.7`;
    let `#UserApp.3` : Struct([Builtin(Int(I64)), Builtin(Int(U8))]) = CallByName `#UserApp.alpha`;
    let `#UserApp.2` : Builtin(Int(U8)) = StructAtIndex 1 `#UserApp.3`;
    let `#UserApp.0` : Builtin(List(Builtin(Int(U8)))) = Array [`#UserApp.1`, `#UserApp.2`];
    ret `#UserApp.0`;
```

What's happening is that we need to specialize `alpha` twice - once for the
type of a narrowed to a U8, another time for the type of b narrowed to a U8.

We do the specialization for alpha.b first - record fields are sorted by
layout, so we generate a record of type {i64, u8}. But then we go to
specialize alpha.a, but this has the same layout - {i64, u8} - so we reuse
the existing one! So (at least for records), we need to include record field
order associated with the sorted layout fields, so that we don't reuse
monomorphizations like this incorrectly!
2022-02-21 14:10:45 -05:00
Brendan Hansknecht
74daec84df
Merge pull request #2472 from rtfeldman/add_Int.toInt_builtins
Add `{Int *}.to{Int *}` builtins
2022-02-21 18:03:14 +00:00
ayazhafiz
e22c9d8168 Fix a typo 2022-02-21 10:29:24 -05:00
Emi Simpson
ff0c994668
Improve library lookup in native linker
🐛 Fix bug where /usr/lib isn't checked if /usr/lib/{arch} exists
 Better error messages on missing libraries
 Check /usr/lib64 for libraries
2022-02-21 10:18:23 -05:00
Brian Carroll
e8571de1ae
Merge pull request #2517 from rtfeldman/repl-www
Web REPL initial version
2022-02-21 13:58:23 +00:00
ayazhafiz
543ca97a1c Remove spaces around var in record update
Closes #2534
2022-02-20 20:17:29 -05:00
ayazhafiz
6b53692aac Canonicalize opaque types 2022-02-20 13:47:01 -05:00
Brian Carroll
603c98d1d9 wasm tests: use wasmer .unwrap_i32 2022-02-20 09:05:08 +00:00
ayazhafiz
6104a27b45 Parse opaque references 2022-02-19 21:30:42 -05:00
ayazhafiz
a38f1d1e8d Fmt and clippy 2022-02-19 20:54:21 -05:00
ayazhafiz
3c10ad2a9f Test for opaque definitions 2022-02-19 20:51:12 -05:00
ayazhafiz
fa24e51593 Parse opaque types 2022-02-19 18:38:31 -05:00
Brian Carroll
a75aa52b91 repl_test: write Rust replacements for JS functions 2022-02-19 23:29:06 +00:00
ayazhafiz
8ce81e4607 AliasHeader -> TypeHeader 2022-02-19 17:51:56 -05:00
ayazhafiz
ee37d8c4e0 Disable unimplemented int casts on wasm 2022-02-19 17:08:20 -05:00
ayazhafiz
aa8b6e3393 Clippy 2022-02-19 16:28:36 -05:00
ayazhafiz
25b355eb38 Fix cast tests 2022-02-19 16:24:49 -05:00
ayazhafiz
13067f2908 Implement Num.toNNNChecked
Closes #2411
2022-02-19 16:20:21 -05:00
Folkert de Vries
1b664741db
Merge pull request #2528 from rtfeldman/roc-std-list-str-refactor
Roc std list str refactor
2022-02-19 21:53:19 +01:00