Commit graph

1747 commits

Author SHA1 Message Date
kilianv
d89253779a
Add expect tests for Str.splitFirst 2022-09-01 16:57:19 +02:00
kilianv
23e430d91d
Fix splitFirst bug
The reason was an of-by-one error.
2022-09-01 16:48:04 +02:00
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