Commit graph

1544 commits

Author SHA1 Message Date
kilianv
80c8c80082
Add tests to splitFirst function
Bugfix is coming up. The extra tests should capture the fix. Right now
not all tests pass.
2022-09-01 16:43:13 +02:00
Brian Carroll
bfc00a4b94
Merge pull request #3920 from roc-lang/static-site-gen
Static site generator example
2022-09-01 07:12:12 +01:00
Ayaz Hafiz
086f7a7e9d
Attempt occurs checks for recursive lambda sets only during monomorphization 2022-08-31 16:45:57 -05:00
Ayaz Hafiz
46bc8647b4
Further push layout interner 2022-08-31 16:08:00 -05:00
Ayaz Hafiz
cea2fcafae
Fix dev/wasm compile errors 2022-08-31 15:42:02 -05:00
Ayaz Hafiz
3a130acc32
Fix mut in test 2022-08-31 15:01:01 -05:00
Ayaz Hafiz
c2d042eba2
Stray dbg 2022-08-31 14:53:52 -05:00
Ayaz Hafiz
95765bcb1e
Intern the lambda set representation 2022-08-31 14:50:56 -05:00
Ayaz Hafiz
1e49622b61
Clippy 2022-08-31 14:36:44 -05:00
Ayaz Hafiz
3b4b1838b8
Push layout interner further through Layout 2022-08-31 14:33:52 -05:00
Ayaz Hafiz
ed04c2040a
Push the layout interner through the backends 2022-08-31 14:33:52 -05:00
Ayaz Hafiz
c5466810a4
Add LayoutInterner to LayoutCache
Adds a thread-local interner of layouts to LayoutCache, and updates all
references appropriately.

This is a bit suboptimal for single-threaded workloads that will look at
creating layout caches again, like the REPL, but I think that's okay for
now - since the global interner will be uncontested for those workloads, it
should still be plenty fast to access the interner, even behind a lock.
2022-08-31 14:33:51 -05:00
Ayaz Hafiz
9d170be5c7
Add layout interner to load_internal 2022-08-31 14:33:51 -05:00
Ayaz Hafiz
14291c4ebc
Add an interner crate 2022-08-31 14:33:51 -05:00
Ayaz Hafiz
261cd75a71
Invalidate layout-cached variables correctly after merging 2022-08-31 14:33:50 -05:00
Ayaz Hafiz
7a7a4fa680
Use fnv hasher for layout cache 2022-08-31 14:26:16 -05:00
Ayaz Hafiz
c57fe24805
Use OptVariable rather than Option<Variable> 2022-08-31 14:23:50 -05:00
Ayaz Hafiz
9b1f3e6fde
Remove unused marker 2022-08-31 14:17:38 -05:00
Ayaz Hafiz
9fb9ca4cbc
return result, not cacheable 2022-08-31 14:17:15 -05:00
Ayaz Hafiz
7c215f9273
Remove stray dbgs 2022-08-31 14:17:15 -05:00
Ayaz Hafiz
ea2e5d171a
Invalidate layout-cached variables correctly after merging 2022-08-31 14:17:14 -05:00
Ayaz Hafiz
66e65714b9
Fix release errors 2022-08-31 14:16:44 -05:00
Ayaz Hafiz
d13b556295
Trace stats for layout cache 2022-08-31 14:16:43 -05:00
Ayaz Hafiz
c2a0b878d3
Clippy 2022-08-31 14:16:43 -05:00
Ayaz Hafiz
22a4a4dfbc
Relay metadata back when using cached result 2022-08-31 14:16:43 -05:00
Ayaz Hafiz
7b8e1e1d53
Even more inline aggression 2022-08-31 14:16:43 -05:00
Ayaz Hafiz
c53719eb95
Debug non-reused recursive structures 2022-08-31 14:16:43 -05:00
Ayaz Hafiz
e24cdb8272
Be far more aggressive about cache inlining 2022-08-31 14:16:43 -05:00
Ayaz Hafiz
a64d9d97c5
Do not reuse cached entries for recursive structures that are being reconstructed 2022-08-31 14:16:43 -05:00
Ayaz Hafiz
caf4a80542
Clippy 2022-08-31 14:16:42 -05:00
Ayaz Hafiz
3ce4c6c77d
Typo 2022-08-31 14:16:42 -05:00
Ayaz Hafiz
3856ea6199
Implement a cache policy - don't cache recursive pointers without a recursive layout 2022-08-31 14:16:42 -05:00
Ayaz Hafiz
eb5ec2bd98
Don't account for recursive unions in non-recursive layout gen 2022-08-31 14:16:42 -05:00
Ayaz Hafiz
d757701426
First pass at layout caching 2022-08-31 14:16:42 -05:00
Ayaz Hafiz
8b0f7dc82f
Propagate layout_cache throughout Env in generating layout
Sets up actually using the LayoutCache to get cached layouts.
2022-08-31 14:16:42 -05:00
Ayaz Hafiz
593d609c2b
Check for unifiability of lambda sets without a subs snapshot
Gives nice performance wins, in particular avoiding clones of
unification tables, which can grow quite large.

Closes #3940
2022-08-31 08:56:45 -05:00
Folkert
a274da62d3
use the windows builtins .obj when cross-compiling 2022-08-30 14:27:16 +02:00
Folkert
e8f6f69bff
make filenames cross-platform 2022-08-30 14:16:20 +02:00
Folkert
42ef5d1977
build a builtins .obj file for windows cross-compilation 2022-08-30 13:49:47 +02:00
Folkert de Vries
3dbf6cc99b
Merge pull request #3859 from roc-lang/dependabot/cargo/insta-1.19.0
Bump insta from 1.18.2 to 1.19.0
2022-08-30 12:14:24 +02:00
Folkert de Vries
938c55ee1e
Merge pull request #3872 from raleng/fix_formatting_multiline_strings
Fix multiline string formatting
2022-08-30 11:31:53 +02:00
Folkert
d93d42da8c
make chasing an ext return a custom type 2022-08-30 00:51:24 +02:00
Folkert de Vries
acb71d6007
Merge pull request #3835 from roc-lang/ext-vars-in-derivers
Support bound and unbound extension variables in deriving
2022-08-30 00:34:50 +02:00
Folkert de Vries
f918f16b0f
Merge pull request #3922 from roc-lang/i3722
Only compile and run expects that belong to the same package
2022-08-29 23:21:17 +02:00
Ayaz Hafiz
b44d68aac5
Handle Roc's return by pointer flowing into a C ABI return by pointer 2022-08-29 08:56:22 -05:00
Folkert de Vries
1db7c3664d
Merge pull request #3877 from roc-lang/dev-backend-add-checked
dev backend add checked
2022-08-29 09:47:20 +02:00
Brian Carroll
6cada1ab6e
Try (unsuccessfully) to fix an LLVM code gen bug
We still get a panic as follows:

cargo run run --debug examples/static-site-gen/app.roc -- examples/static-site-gen/input examples/static-site-gen/output

 Stored value type does not match pointer operand type!
  store { [0 x i64], [24 x i8], i8, [7 x i8] }* %result_value, { [0 x i64], [24 x i8], i8, [7 x i8] }* %0, align 8
 { [0 x i64], [24 x i8], i8, [7 x i8] }*
2022-08-28 23:58:42 +01:00
Richard Feldman
c6516acdb4
Drop unused ExecutionMode 2022-08-28 16:01:37 -04:00
ayazhafiz
3456a44742
Only compile and run expects that belong to the same package
In particular, don't run expects that come from modules with a different
package qualification (including subpackages; we can loosen this
restriction later), or builtins when run on userspace apps/interfaces.

Closes #3722
2022-08-28 10:16:55 -05:00
Richard Feldman
3ca9202e3b
Merge pull request #3834 from roc-lang/rust-1.63-clippy
rust 1.63 clippy
2022-08-27 21:15:36 -04:00