Release v0.3.0
What's Changed
- Namer should bind captures of mutable variables by @b-studios in #409
- Add a generic structural comparison primitive to JS backend by @jiribenes in #394
- Feature: tracing/timing of compilation phases by @dvdvgt in #411
- Fix highlights for consoles with white text color by @marvinborner in #416
- Add benchmarks for reduction of functions by @marvinborner in #413
- Add Existentials by @b-studios in #418
- Add support for names ending in ? and ! by @b-studios in #419
- Fix multiple string issues by @marvinborner in #410
- Rename Boolean to Bool by @marvinborner in #420
- Explicit interface boxing by @jiribenes in #421
- Allow using
get
andput
with UFCS by @jiribenes in #424 - Improve parser performance by not copying strings all of the time by @b-studios in #436
- Enable inlining of small block definitions by @b-studios in #438
- Fix #434 by disabling unnecessary check by @b-studios in #439
- Add shortcutting for boolean operations by @marvinborner in #425
- Add flag for outputting IRs by @marvinborner in #443
- Use feature flags for extern definitions by @marzipankaiser in #427
- Type omission for operation implementations and block arguments by @dvdvgt in #417
- LLVM: Allow polymorphic codata by @marzipankaiser in #452
- Cache compiler after stdlib to speed up tests by @b-studios in #450
- Extern warnings only if they reach code generation by @marzipankaiser in #451
- Fix ANSI highlighting of strings within multiline strings by @marvinborner in #457
- Unnamed types by @phischu in #460
- PolymorphismBoxing for Any/Nothing by @marzipankaiser in #458
- Refactor Stdlib by @b-studios in #449
- Fix boxing of Nothing / Add explicit type annotation to Val, Let by @b-studios in #461
- Homogenize options by @b-studios in #467
- Report detailed missing case on non-exhaustive pattern match by @jiribenes in #470
- Fix/dont match on unit by @b-studios in #468
- Box/unbox boxed blocks by @marzipankaiser in #476
- Fix running Effekt on Windows by @marzipankaiser in #442
- Allow new-style
on[E].result
Result reification by @marzipankaiser in #479 - Bugfix: Duplicate definitions in test stdlib by @marzipankaiser in #478
- Mutable arrays in the LLVM backend by @phischu in #477
- Use externs in
PolymorphismBoxing
by @marzipankaiser in #485 - Add Concurrent IO by @b-studios in #469
- Print types of block arguments without an Option wrapper by @jiribenes in #486
- Allow passing command line parameters directly by @marzipankaiser in #487
- Standardize command-line argument passing across backends by @jiribenes in #489
- Fix #491 by renaming leftover primitives by @jiribenes in #492
- Use consistent naming scheme for output files by @marvinborner in #498
- Implement equality/inequality for
Double
by @marzipankaiser in #490 - Fix generic equals in js backend by @marzipankaiser in #499
- Fix string concatenation on the JavaScript backend by @jiribenes in #493
- Rename constructors of collections by @jiribenes in #488
- Change standard library and handle corner case by @phischu in #501
- Recursive descent by @b-studios in #495
- Adding a separate lexer by @dvdvgt in #435
- Improve readability of generated LLVM code by @marvinborner in #509
- More benchmarks by @phischu in #459
- Additions to the string stdlib by @marzipankaiser in #518
- Fix scope of DataDef constructors by @marvinborner in #519
- Add debug and valgrind to LLVM tests and config by @marvinborner in #510
- Switch to LLVM's tailcc calling convention by passing arguments without env by @marvinborner in #482
- Add feature flags
jsNode
andjsWeb
by @marzipankaiser in #454 - Allow
with def
analogously towith val
by @marzipankaiser in #526 - JS: Parenthesize arguments of raw expresions by @marzipankaiser in #531
- Even more descriptive LLVM codegen by @marvinborner in #520
- Cleanup test exclusions by @marvinborner in #539
- Fix off-by-one error in array::copy by @rzikm in #545
- Make control an explicit capability to overload the traversal by @b-studios in #528
- Require main to always return unit by @b-studios in #551
- LLVM: Pass stack instead of stack pointer by @marvinborner in #530
- Implement a proper wellformedness check by @b-studios in #552
- Do not crash the compiler in server mode by @b-studios in #532
- Add 'process' module with 'exit' function by @jiribenes in #541
- Add
--version
CLI flag by @jiribenes in #556 - Fix: Lexer crashes on unmatched
}
by @dvdvgt in #555 - Cache sbt files in CI, update versions of CI actions by @jiribenes in #560
- Improve names generated by LLVM by @b-studios in #562
- Use a relative path for loading the JS main by @marzipankaiser in #566
- Also refer to main files and chez using a relative path by @marzipankaiser in #570
- Fix PolymorphismBoxing for more complex uses of interfaces and effect handlers by @marzipankaiser in #575
- Fix issue #577 by @marzipankaiser in #578
- Chez: make floor, ceil return int values by @marzipankaiser in #580
- Fix type arguments when PolymorphismBoxing parametrized handlers by @marzipankaiser in #581
- Move from lift to prompts by @b-studios in #563
- CI: Update actions/setup-java to v4 by @jiribenes in #583
- Move to a weekly release scheme by @jiribenes in #538
- Move benchmark configs from effekt-plots by @marvinborner in #567
- refactor: Use env variables for java and node versions in ci.yml by @ChinoUkaegbu in #586
- Use splices in LLVM templates by @b-studios in #587
- Clean up transformation to machine a bit by @b-studios in #588
- Support singleton operations better by @b-studios in #590
- Fix buggy LLVM tests by @marvinborner in #568
- Local Variables by @serkm in #584
- CI: Bypass push protection in autorelease.yml by @jiribenes in #591
New Contributors
- @rzikm made their first contribution in #545
- @ChinoUkaegbu made their first contribution in #586
Full Changelog: v0.2.2...v0.3.0