Commit graph

107 commits

Author SHA1 Message Date
Richard Feldman
df7df4ccf8
Merge branch 'trunk' into mfonism/rename-num-float-type-to-frac 2022-05-08 20:54:33 -04:00
Folkert de Vries
5d3b83f5a6
Merge pull request #2268 from rtfeldman/update_zig_09
Update to Zig 0.9 + LLVM 13
2022-05-08 23:29:45 +02:00
Mfon Eti-mfon
9068c2414e
Rename float functions and vars 2022-05-08 18:42:12 +01:00
jonas schell
532055bf3b implement NumPowInt 2022-05-08 14:17:11 +02:00
Folkert
81caa96af2
Merge remote-tracking branch 'origin/trunk' into update_zig_09 2022-05-07 19:38:04 +02:00
Folkert
9e80673b1d
implement Num.round in the wasm backend like how the dev backend does it 2022-05-06 20:41:02 +02:00
Folkert
07383e96f0
Merge remote-tracking branch 'origin/trunk' into i/2792 2022-05-06 20:17:53 +02:00
Folkert
64b633bea6
make round return an integer 2022-05-06 20:17:40 +02:00
Folkert
5755475b3a
add ListIsUnique lowlevel operation 2022-05-06 13:56:35 +02:00
Brian Carroll
07b3c74713
Refactor for faster Rust compile times 2022-05-02 04:28:33 -07:00
Jared Cone
c7459e9888
Added support for unsigned gt/lt to wasm.
Breaks some other tests, pushing now for sharing
2022-05-02 04:28:33 -07:00
Folkert
b7b86c0cde
Merge remote-tracking branch 'origin/trunk' into update_zig_09 2022-04-30 23:34:48 +02:00
Brian Carroll
f8156ffd53
Merge pull request #2834 from rtfeldman/wasm-list-map-n
Wasm List.mapN
2022-04-20 14:47:04 +01:00
Brian Carroll
ae05e870af wasm: Fix Wasm type mismatch for empty closure data in List.mapN 2022-04-13 22:05:57 +01:00
Brian Carroll
bdad1a5161 wasm: Extract List.mapN logic into a helper function 2022-04-13 21:38:54 +01:00
Brian Carroll
c950f6d834 Merge branch 'trunk' of github.com:rtfeldman/roc into wasm-linking-zig9 2022-04-11 18:34:43 +01:00
Brian Carroll
a7a84019cd wasm: Get List.map3 working 2022-04-11 14:36:31 +01:00
Brian Carroll
7b96e953ba wasm: Get List.map2 working 2022-04-11 14:36:31 +01:00
Brian Carroll
249925cb23 wasm: Work around Zig returning small structs as integers 2022-04-11 11:28:40 +01:00
Folkert
1d0f9e9192
Merge remote-tracking branch 'origin/trunk' into builtins-in-roc 2022-04-08 15:47:11 +02:00
ayazhafiz
1efe3e9929 Fix typo 2022-04-07 21:11:19 -04:00
ayazhafiz
134a7bf787 Update wasm implementation 2022-04-07 21:10:22 -04:00
Richard Feldman
cd00a98636
Add toF32/64 and checked versions 2022-04-07 16:13:57 -04:00
Brian Carroll
9116770a00 wasm: Adjust List.map code gen for capacity 2022-04-07 09:29:42 +01:00
Brian Carroll
2b74e55240 Merge branch 'trunk' of github.com:rtfeldman/roc into wasm-higher-order-calls 2022-04-07 09:03:34 +01:00
Richard Feldman
08466380df
Merge pull request #2798 from rtfeldman/wasm-fix-dec-isfinite
Wasm: fix Num.isFinite for Dec
2022-04-04 20:58:46 -04:00
Brian Carroll
0910831f59 wasm: fix Num.isFinite for Dec
When I wrote this code I thought it was the base10 floating point format,
but in fact it's fixed-point.
2022-04-05 00:02:31 +01:00
Brian Carroll
8620cdf75c wasm: function pointers for higher order calls 2022-04-05 00:02:05 +01:00
Brian Carroll
5db3ae0227 wasm: code gen for higher order wrapper function 2022-04-05 00:02:05 +01:00
Brian Carroll
51789f38c2 wasm: generate RC inc for higher order builtins 2022-04-05 00:02:05 +01:00
Brian Carroll
05459455ec wasm: ProcLayout for higher order wrapper fns 2022-04-05 00:02:05 +01:00
Brian Carroll
83cae16a60 wasm: Generate code for List.map call (incomplete) 2022-04-05 00:02:05 +01:00
Brian Carroll
448140d223 wasm: refactor to prepare for HigherOrder calls 2022-04-05 00:01:11 +01:00
Folkert
c73c01aa34
Merge remote-tracking branch 'origin/trunk' into list-str-capacity 2022-03-30 14:07:17 +02:00
Folkert
877b9eab7a
Merge remote-tracking branch 'origin/trunk' into builtins-in-roc 2022-03-23 17:33:58 +01:00
Brian Carroll
24e6cd80e7 wasm: fix argument order for shiftRightBy & disable tests with 8-bit values 2022-03-22 22:28:18 +00:00
Folkert
4e1197165b
Merge remote-tracking branch 'origin/trunk' into builtins-in-roc-delayed-alias 2022-03-18 21:25:52 +01:00
Brian Carroll
456d8ff9cb Merge branch 'trunk' of github.com:rtfeldman/roc into list-str-capacity 2022-03-11 19:28:13 +00:00
Brian Carroll
20f6330f72 wasm: Fix Str.isEmpty for capacity 2022-03-10 06:59:15 +00:00
Folkert
92f2927046
initial implementation 2022-03-08 19:09:42 +01:00
Folkert
3510bad1d5
add scaffolding 2022-03-07 20:55:40 +01:00
Folkert
adf4ad22a5
Merge remote-tracking branch 'origin/trunk' into builtins-in-roc 2022-03-05 20:55:15 +01:00
Brendan Hansknecht
2e70bb8458 remove list set low level 2022-02-27 15:07:09 -08:00
Folkert
65b1b3fcce
just before Num 2022-02-26 23:11:40 +01:00
Brendan Hansknecht
dddf8ff785 switch from pair to record and change name to ListReplaceUnsafe 2022-02-24 20:41:26 -08:00
Brendan Hansknecht
ba2e8cd32b Add base piping for list.Replace 2022-02-24 17:58:56 -08: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
ayazhafiz
13067f2908 Implement Num.toNNNChecked
Closes #2411
2022-02-19 16:20:21 -05:00
Mats Sigge
71f359fbdc Move macros from roc_reporting to new roc_error_macros module
The `internal_error!` and `user_error!´ macros can't be used everywhere
when they live in `roc_reporting` due to circular dependencies.
2022-01-23 18:40:04 +01:00
Brian Carroll
f354b4842b Wasm: Move Eq/NotEq into LowLevelCall 2022-01-17 09:35:08 +00:00