Releases: effekt-lang/effekt
Release v0.9.0
What's Changed
- More sharing of erasers and sharers by @marvinborner in #657
- Add 'char' library by cherrypicking from #631 by @jiribenes in #664
- Allocate region variables as "local variables" on previous stack by @serkm in #642
- Try to improve resolution by adding a bit context by @b-studios in #671
- Refactor/core delimited control by @b-studios in #669
- Optimize tailresumptive handlers by @b-studios in #674
- Note parameters by @serkm in #677
- Add jump-to-definition for imports by @b-studios in #676
- Improve the error when an effect is not fully known by @b-studios in #678
- Fix 'jump to definition' for singleton operations (#646) by @jiribenes in #681
- Fix getting started link by @b-studios in #682
Full Changelog: v0.8.0...v0.9.0
Release v0.8.0
What's Changed
- Do polymorphism boxing for the result of regions by @marzipankaiser in #655
- Fix #661 by improving type inference by @b-studios in #662
Full Changelog: v0.7.0...v0.8.0
Release v0.7.0
What's Changed
- Refactor LLVM backend by @serkm in #648
- Make LLVM's stack growable by @marvinborner in #644
- Mutable bytearrays by @phischu in #630
- Direct access to handlers/state by @serkm in #645
- Require default for finite domains instead of giving up by @b-studios in #653
- Fix bytearray construct by @phischu in #654
Full Changelog: v0.6.0...v0.7.0
Release v0.6.0
What's Changed
- Fix capability passing for extern definitions by @dvdvgt in #633
- Fix SBT installation by @marvinborner in #637
- Add missing sbt setups by @marvinborner in #643
- Js cps backend by @b-studios in #619
- Fix scheduler case study title by @jiribenes in #649
Full Changelog: v0.5.0...v0.6.0
Release v0.5.0
What's Changed
- Remove "user-defined effects" terminology by @oberth-effect in #623
- Allow braces in match clauses by @dvdvgt in #626
- Recover from malformed operation implementation by @jiribenes in #625
- Add arithmetic right shift to stdlib by @jiribenes in #629
- Add scheduler example as a casestudy by @dvdvgt in #627
- Add repl to scheduler casestudy by @dvdvgt in #634
- Improve handling of (unicode) escapes by @marzipankaiser in #622
- Migrate doc comments to use '///' by @jiribenes in #628
New Contributors
- @oberth-effect made their first contribution in #623
Full Changelog: v0.4.0...v0.5.0
Release v0.4.0
What's Changed
- Added case study on probabilistic programming and inference by @sinaschaefer in #445
- Update NodeJS to 16.x by @jiribenes in #599
- Alternative: implement transformation in machine-transformer by @b-studios in #602
- Privatize inlined functions by @serkm in #597
- Implement round, floor, ceil on the LLVM backend by @jiribenes in #606
- Direct IO which is asynchronous by @phischu in #553
- Inline includes and mark them as jsNode where necessary by @b-studios in #612
- Effekt by example by @dvdvgt in #536
- Move 'examples/features' to 'examples/tour' by @jiribenes in #618
- Update installation instructions on the README by @dvdvgt in #615
- Fix infinite recursion in PolymorphismBoxing by @marzipankaiser in #620
- Prettify the stdlib testing framework by @jiribenes in #542
- Remove lifted and backends that use it by @b-studios in #616
- Fix cast warning in LLVM io.c by @marvinborner in #617
New Contributors
- @sinaschaefer made their first contribution in #445
Full Changelog: v0.3.0...v0.4.0
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
Release v0.2.2
Automatic release for refs/tags/v0.2.2
What's Changed
- Rework
--compile
and add a seperate--build
option by @dvdvgt in #294 - Integrate higher-rank polymorphism on block parameters by @dvdvgt in #298
- fix currentTimeNanos to return nanos, not micros by @IR0NSIGHT in #302
- Lexer: match escape sequences in strings by @dvdvgt in #290
- Feature/init array default values by @IR0NSIGHT in #296
- Higher Rank Polymorphism follow-up: parser refactor by @dvdvgt in #310
- JS backend: Do not drop first element for Array.toList (fixes #319) by @marzipankaiser in #320
- Port break & continue to all backends by @jiribenes in #315
- Testing infrastructure for core transformations by @marzipankaiser in #321
- Improve core testing infrastructure by @marzipankaiser in #323
- DS-JS Backend by @b-studios in #316
- Refactor/post merge cleanup by @b-studios in #340
- Add sbt command
bench
to automatically run the benchmarks by @b-studios in #342 - Use
.effekt.md
for literate Effekt code by @marzipankaiser in #341 - Make most of the tests work for the monadic backend again by @b-studios in #343
- Expand standard library by @jiribenes in #339
- Fix missing code snippet ending by @marvinborner in #346
- Add sbt task for building the JS file by @dvdvgt in #347
- Feature/core constructor by @b-studios in #349
- Fix "Annotate Captures" feature of the VSCode extension by @dvdvgt in #348
- Fix non-zero exit code on error by @marvinborner in #338
- Feature/extern unquotes by @b-studios in #350
- Try to fix capture flow by @b-studios in #371
- Website breaks to missing extern definitions by @b-studios in #374
- Improve Test Runner by @b-studios in #377
- Warn if a type parameter shadows a non-parameter by @b-studios in #378
- Fix #354 by not exporting extern resources by @b-studios in #379
- Try to run CI only once and not twice on a PR by @b-studios in #380
- Also check wellformedness of effects in namer by @b-studios in #381
- Also export and import captures to allow referring to them in other modules by @b-studios in #382
- Do not ignore type parameters of receiver in method calls by @b-studios in #376
- Implement pattern matching with literals and guards by @b-studios in #385
- Implement namespaces by @b-studios in #388
- Fix separate compilation involving (nested) namespaces by @b-studios in #391
- Constructor calls are also pure, but we need to bind them as scrutinees by @b-studios in #393
- Expand immutable/list library in every backend by @jiribenes in #355
- Add examples from OOPSLA-2022 artifact as tests by @dvdvgt in #386
- Hardcode types that should be boxed by @b-studios in #392
- Directly forward execution output to stdout by @marzipankaiser in #370
- Fix: Object typing for bidirectional effects by @dvdvgt in #361
New Contributors
- @dvdvgt made their first contribution in #294
- @IR0NSIGHT made their first contribution in #302
- @marvinborner made their first contribution in #346
Full Changelog: v0.2.1...v0.2.2
Release v0.2.1
Automatic release for refs/tags/v0.2.1
What's Changed -- Major
- Evidence Monomorphization by @b-studios in #229
- Naive state by @b-studios in #235
What's Changed –– User Facing
- Generalize extern capture and add resources by @b-studios in #178
- Parse return type annotation of operations by @jiribenes in #148
- Feature/user state by @b-studios in #176
- Feature/compile pattern matching by @b-studios in #187
- Feature/match void by @b-studios in #189
- Improved Exhaustivity Check by @b-studios in #190
- Refactor/deprecate local declarations by @b-studios in #191
- Deprecate multiple value argument sections by @b-studios in #253
- Improve errors by @b-studios in #255
- Optimize Core by @b-studios in #267
- Support 64bit integer literals by @b-studios in #279
- Support recursive object definitions by @b-studios in #280
- Avoid having two effekt binaries (deprecate effekt.sh) by @b-studios in #166
- First step at making the prelude configurable by @b-studios in #174
- Make prelude configurable by @b-studios in #175
- Feature/show capture in vscode by @b-studios in #181
- Expand on stdlib for ML backend by @b-studios in #260
What's Changed -- LLVM Backend
-
More extensive stdlib for LLVM by @marzipankaiser in #223
-
LLVM
String
s (UTF-8-interpreted byte buffers) by @jfrech in #142 -
multi-line
extern
definitions ; LLVM stdlib by @jfrech in #138 -
Machine:
interfaces
and multiple operations by @marzipankaiser in #162 -
Machine: Handle evidence by @marzipankaiser in #164
-
Machine: Allow block parameters with effects by @marzipankaiser in #184
-
Shallow types in machine so we can compile recursive data types. by @phischu in #154
-
machine: Add support for multi-handlers by @marzipankaiser in #236
-
machine: Val(x,s,Return(x)) -> s by @marzipankaiser in #241
-
Machine: Fix arity mismatch with effect handlers due to evidence by @marzipankaiser in #163
What's Changed –– Code Quality
- Fix block parameter type pretty-printing by @jiribenes in #155
- Move from Scalatest to MUnit by @b-studios in #172
- Migrate to Scala 3.2 by @b-studios in #173
- Simplify Syntax by @b-studios in #177
- Rename Builtin to Extern by @b-studios in #179
- Refactor/syntax into enums by @b-studios in #183
- Add sbt command generateDocumentation to update the tree documentation by @b-studios in #186
- Refactor/cleanup core lifted by @b-studios in #193
- Drop intrinsic lists in core by @b-studios in #194
- Whole program js by @b-studios in #196
- Feature/typed core draft by @b-studios in #203
- Core parser by @b-studios in #205
- Remove deprecated test by @JonathanStarup in #208
- Annotate more core types in lifted by @marzipankaiser in #209
- Common Context objects for phases on core and lifted by @b-studios in #204
- Refactor/visitor macro by @b-studios in #211
- Handle
Record
inDeclPrinter
by @marzipankaiser in #216 - Polymorphism in machine-based backends (through boxing) by @marzipankaiser in #199
- Wrap pure/direct blocks in core to use the correct calling convention by @marzipankaiser in #210
- Convert filename of location of node to URI by @mm0821 in #221
- PolymorphismBoxing: Transform the callee correctly by @marzipankaiser in #228
- Fix bug in tuple pattern by @serkm in #224
- Refactor/typed lifted by @b-studios in #226
- lifted.freeVariables: Don't overload by type, assert equality by @marzipankaiser in #227
- MLton backend by @b-studios in #156
- WIP Quickly draft implement state that requires evidence by @b-studios in #231
- Add shift to lifted by @b-studios in #232
- Refactor backend interfaces by @b-studios in #234
- Add support for Holes to machine and llvm by @marzipankaiser in #220
- machine: Fix passing of free variables to local functions by @marzipankaiser in #219
- PolymorphismBoxing: Fix transformation of Operations by @marzipankaiser in #237
- Fix failing test caused by #255 by @jiribenes in #257
- Recursive mono by @b-studios in #263
- Bugfix at toInt by @serkm in #277
- Fix/32bit integer literals by @b-studios in #278
New Contributors
- @serkm made their first contribution in #197
- @JonathanStarup made their first contribution in #208
Full Changelog: v0.2.0...v0.2.1
Release v0.2.0
Automatic release for refs/tags/v0.2.0
What's Changed
- We integrated System C (described in our OOPSLA paper "Effects, Capabilities, and Boxes"
- First draft of the LLVM backend -- not fully implemented, yet.
- Many more changes.
Full Changelog: v0.1.16...v0.2.0