Brendan Hansknecht
1319ba4844
add List.releaseExcessCapacity builtin
2023-03-13 17:43:21 -07:00
Brendan Hansknecht
e6964536b2
add more Num.bytesTo* functions
2023-03-12 08:41:05 -07:00
Brendan Hansknecht
785da377c8
add Num.count*Bits functions
2023-03-12 08:41:04 -07:00
Brendan Hansknecht
f42f61e271
run a toml formatter and then clean it up a bit
2023-03-06 19:47:57 -08:00
Brendan Hansknecht
4a89bee0a5
centralize package versions except for vendor and excluded
2023-03-06 19:29:09 -08:00
Brendan Hansknecht
5485c8a5b0
update to using workspace package spec
2023-03-06 16:36:18 -08:00
Ayaz Hafiz
739bdfe64e
Fix a bug in chasing assigned/hole on switch
2023-03-05 22:19:16 -06:00
Ayaz Hafiz
7914b07a2f
Eliminate unneeded joinpoints in union lambda dispatches
2023-03-05 22:10:42 -06:00
Ayaz Hafiz
a2389c7652
Eliminate joinpoints in trivial lambda set switches
2023-03-05 21:59:01 -06:00
Ayaz Hafiz
9166922e39
Remove unused is_terminal
2023-03-05 21:41:50 -06:00
Brendan Hansknecht
66a7d08363
make List.mapN properly add all decrefs
2023-03-02 07:24:49 -08:00
Folkert de Vries
bd6623dab4
Merge pull request #5055 from roc-lang/abilities-bug-generic
...
Lambda set compaction must preserve unique specializations of concrete types
2023-02-21 15:24:23 +01:00
Folkert de Vries
088bd5211f
Merge pull request #5054 from roc-lang/glue-generate-lambda-set-callers
...
Glue generate lambda set callers
2023-02-21 02:19:53 +01:00
Ayaz Hafiz
f7aa7e734d
Pass interner through to debug proc layouts misisng in param map
2023-02-20 18:49:29 -06:00
Ayaz Hafiz
e5c3376e90
Debug ProcLayouts
2023-02-20 18:49:18 -06:00
Ayaz
2f251310c0
Merge pull request #5010 from roc-lang/tuple-record-unify
...
Unify IR generation for tuples and records
2023-02-20 18:40:52 -06:00
Folkert
958d44a21c
cleanup
2023-02-20 22:25:48 +01:00
Folkert
68524ef07e
generate callers based on layout traversal
2023-02-20 22:05:35 +01:00
Folkert
90c45a197b
use extracted functions
2023-02-18 17:57:50 +01:00
Folkert
784ebde24b
helper functions
2023-02-18 17:34:41 +01:00
Folkert
edd10a079c
create hook for future glue proc codegen
2023-02-18 17:34:23 +01:00
Ayaz
b0d3d8fc7c
Merge pull request #5029 from roc-lang/lambda-set-cleanup
2023-02-14 08:51:35 -06:00
Ayaz Hafiz
b11cf19658
Remove unreachable lambda set layout branches
...
Lambda sets can only appear under function types, so we don't need to
handle them independently in layout gen.
2023-02-13 17:50:24 -06:00
Ayaz Hafiz
a3de22c88a
Do not fixup recursion pointers in non-recursive lambda sets
...
If a lambda set is non-recursive, but contains naked recursion pointers,
we should not fill those naked pointers in with the slot of the lambda
set during interning. Such naked pointers must belong to an encompassing
lambda set that is in fact recursive, and will be filled in later.
For example, `LambdaSet([Foo, LambdaSet(Bar, [<rec>])] as <rec>)` should
not have the inner lambda set's capture be filled in with itself.
Also, during reification of recursion pointers, we do not need to
traverse re-inserted lambda sets again, since they were just fixed-up.
Closes #5026
2023-02-13 17:14:04 -06:00
Ayaz Hafiz
2903ec4ac2
Remove obsolete comments
2023-02-13 10:54:05 -06:00
Folkert
587c5c18d7
mono refcount: use box instaed of non-nullable unwrapped
2023-02-10 20:19:49 +01:00
Ayaz Hafiz
a22dcb5784
Unify record and tuple access
2023-02-08 11:13:36 -05:00
Ayaz Hafiz
1ee5f9d02b
Unify logic for building record and tuple IR
2023-02-08 11:03:02 -05:00
Joshua Warner
5a6be05ead
implement mono / lowering for tuples
2023-02-07 18:54:50 -08:00
Ayaz Hafiz
0af5929411
Add comments for debug reprs
2023-01-30 17:22:16 -06:00
Ayaz Hafiz
4a59e24081
Address lints
2023-01-30 16:48:46 -06:00
Ayaz Hafiz
8c68044c54
Prime the cache with a default layer
2023-01-30 16:48:01 -06:00
Ayaz Hafiz
c3064dad73
Add method to get index of interned layout
2023-01-30 15:53:37 -06:00
Ayaz Hafiz
c1a937e393
Add method to debug whole nested structure of interned layout
2023-01-30 15:53:13 -06:00
Ayaz Hafiz
a16ea95a04
Always start off with an empty cache
...
Adding a cache layer can only be done with a snapshot and rollback.
This is necessary to prevent extra variables just lying around on the
toplevel of the layout cache.
2023-01-30 13:08:21 -06:00
Ayaz Hafiz
1e22a2bbcd
Layout-cache variable invalidation must compare by root keys
...
After unification, variable roots can change. So, when we invalidate
entries in the layout cache, we must compare for variable equivalence
relative to the current state of subs.
2023-01-30 13:06:44 -06:00
Ahmad Sattar
f80edb6ed6
Put list_element_layout!
macro into mono
2023-01-28 02:01:02 +01:00
Ayaz
0672879fff
Merge pull request #4965 from roc-lang/recursive-layouts-rec-by-default
...
Support equivalence for finding lambda sets
2023-01-26 15:20:59 -06:00
Brian Carroll
e0b5247f3e
mono code_gen_help: decref should use element alignment, not List alignment
2023-01-26 20:05:16 +01:00
Brian Carroll
7228502965
mono: delete is_rc_implemented_yet, because everything is implemented!
2023-01-26 20:05:16 +01:00
Ayaz Hafiz
a294cae9cd
Don't store recursive unions by recursive pointer head-on
2023-01-25 18:05:43 -06:00
Ayaz Hafiz
36beda63ba
Lints
2023-01-25 18:00:32 -06:00
Ayaz Hafiz
478d4a2d44
Support lambda sets with recursive pointers and their equivalence-checking
2023-01-25 17:57:49 -06:00
Ayaz Hafiz
fa47e82d72
Implement equivalence of lambda sets
2023-01-25 17:20:42 -06:00
Ayaz Hafiz
61b11c9882
Single-threaded layout interner should resolve recursive pointer
2023-01-25 17:19:39 -06:00
Ayaz Hafiz
44acb7e047
Update recursive layout tests
2023-01-25 17:19:14 -06:00
Ayaz Hafiz
aab626bf3f
Remove resolve_recursive_layout
2023-01-25 16:21:05 -06:00
Ayaz Hafiz
7754cc553c
Turn the ir-checker back on
2023-01-25 16:18:47 -06:00
Ayaz Hafiz
c9afbce053
Add an up-to-isomorphism equivalence checker for layouts
2023-01-25 16:17:30 -06:00
Ayaz Hafiz
cb00619ce3
Return normalized representation of recursive union as the rec ptr
2023-01-25 15:16:48 -06:00