All notable changes to this project will be documented in this file.
Note that while Elara follows SemVer where possible, most of the source code is not considered public API with regards to breaking changes. As such, breaking changes may occur between minor versions until a stable release of the language.
- (core) 🎨 Add the primitive
doubleCon
name to Elara.Prim.Core - (78cf21b) - (core) ✨ Add a function to calculate ("infer"?) the type of a core expression - (34ac8e6)
- (core) ✨ Core type checking! - (72cac00)
- (core) ✨ Add match inference for core tc - (17af4fc)
- (to-core) ⚡ Add a core-to-core pass which removes reundant let-in's - (0d3bc53)
- (to-core) ✨ Get very basic (and probably super buggy) conversion to ANF working! - (2283e6c)
- (to-core) ✨ Start to reimplement to-core phase - (7e46451)
- (to-core) ✨ Add the main conversion functionality back - (35201bd)
- (to-core) ✨ Implement recursive let detection for to-core - (8c72069)
- (type-infer) 💄 Improve output of NotFunctionType error - (2508123)
- ✨ Add pretty instance for 6-tuple - (1189208)
- (core) 🐛 Fix lambda ANF transformations - (a3c86e9)
- (core) 🐛 Fix recursive lets (aptly) infinite looping when being converted to ANF - (34a0633)
- (core) 🐛 Fix ToANF incorrectly handling lets - (6dec072)
- (core) 🐛 Fix core typecheck incorrectly reporting unbound vars - (b5e0972)
- (logging) 🐛 Fix call stacks in logging - (d3e4620)
- (parser) 🐛 Fix type declaration parsing wrt indents - (53f148b)
- (parser) 🐛 Fix operators as variables (eg
(+)
) not being correctly parsed - (55de02d) - (stdlib) ✏️ Fix a "typo" in source.elr (so that it works) - (9e1f1fd)
- (tests) 🧪 Fix the unit tests not compiling / succeeding - (730e828)
- (to-core) 🐛 Fix ANF conversion in core not correctly handling match expressions - (6cc25cd)
- (type-infer) 🐛 Fix type applications not being added in places they should - (2c50294)
- (type-infer) 🐛 Improve handling of skolems wrt generalisation - (db45ce3)
- (type-infer) 🐛 Ensure that every type in the AST has the substitution applied - (48acad9)
- (type-infer) 🏷️ Fix type errors / missing Pretty instances - (9350f9e)
- (type-infer) 🐛 Fix substitutions not being properly propagated - (9aa552f)
- Fix class names - (4082462)
- Fix a possible bug in Stream.hs - (7d25b00)
- Fix imports - (cca1e0e)
- Fix constraint generation for variable references - (5ceaaac)
- Fix the instantiation descriptions - (939ab7e)
- Fix nix hlint part3 - (3752d52)
- Fix this stupid formatter once and for all - (1601b02)
- Fix bugs! - (b19c315)
- Fix unit tests - (a0b92bf)
- Fix dependency problem - (22f8879)
- Fix if/elses and datacons - (056b4dc)
- Fix compilation error - (2ab710b)
- Fix the tests compiling - (033b41c)
- Fix the tests! - (5a3a136)
- Fix more tests - (076711a)
- Fix Desugarer bug - (3237f72)
- Fix some warnings - (c0dfad1)
- Fix tests not compiling - (ed573eb)
- Fix test compilation - (86c98ce)
- Fix tests compiling again - (6df8797)
- Fix generic prettying of selectors - (be53bff)
- (codegen) 💄 Add parentheses to toString generation - (6e35e1b)
- (codegen) 💄 Improve pretty instance for NamedMethodDescriptor - (6b5e843)
- (codegen) 🔊 Use StructuredLog in codegen - (e65670a)
- (codegen) 🔊 Improve the logging a little bit by removing some of the now-redundant "X Complete" logs - (61747db)
- (lexer) ♻️ Change lexer to distinguish between manual and automatic semicolon tokens - (613783b)
- (logging) ♻️ Extract a function
defaultReport
providing a usable defaultReportableError
implementation - (ad408da) - (parser) 🔇 Remove debug logging from parser - (61b6c3c)
- (renamer) ♻️ Desugar tuple literals into normal data constructors - (9452cc7)
- (to-core) 🔊 Improve error messages in Core.Analysis.exprType - (86e4f40)
- 🔊 Refactor structured (i.e. potentially nested) logging into its own effect - (6492cb2)
- ♻️ Tidy up a lot of the generic AST code, including removing usages of
unsafeCoerce
- (a58941f) - ♻️ More tidying - (b73678b)
- Refactor typed ast to only store monotypes - (a5afa80)
- Refactor ast naming to be "simpler" and make more invalid states unrepresentable - (af37b2b)
- Refactor the logging to be a bit cleaner - (a0faa0a)
- (core) 💄 Improve Core prettyprinter - (fb8a911)
- (core) 🎨 Only import pretty instances - (61209f1)
- (core) 🎨 Tidy up ToANF a little - (d65a497)
- (core) 🎨 Add the "of" to dumped core case expressions - (bbd5c43)
- (core) 🎨 Remove some of the printing of variable types from core dumps - (0a7e493)
- (core) 🎨 Adjustments to lambdas in core printing - (d5be790)
- (core) 💄 Improve Core Typecheck error message - (7caae66)
- (core) 💄 Change prettyprinting of Core let rec - (62007ef)
- (core) 🎨 Remove the annoying spacing in core dumps after
=
- (23b0157) - (core) 🎨 Improve core prettyprinting a lot - (8b9ecaa)
- (parser) 🔇 Remove debug logging from parser - (5878aa7)
- (to-core) 🔇 Remove old debug message - (eda6d02)
- (type-infer) ✅ Improve behaviour of applicableTyApp and test cases - (06ad585)
- (logging) 🐛 Update polysemy-log dependency, maybe fixing some compilation issues - (a32ba45)
- ⬆️ Update to GHC 9.10.1 - (10db81c)
- 🏗️ Make build flags consistent between tests and executables - (997f2f1)
- ⬆️ Update
optics
- (eb35403) - 🏷️ Add a type signature to
transformOf'
- (d9e50db)
0.1.0 - 2024-06-01
- (renamer) 🐛 Fix #14 and significantly improve error message quality for unknown names - (d22a9b5)
- (renamer) 💄 Use code E0001 for unknown name again - (8e4d3c0)
- (renamer) 🚨 Fix invalid import - (9162419)
- (renamer) ♻️ Change renamer to have the current module be optional - (515f619)
- (changelog) Update CHANGELOG.md - (31c62a7)
- (changelog) Use the git-cliff format for current changelog - (f52b80b)
- (changelog) Use the git-cliff format for current changelog - (9356157)
- (renamer) 🚨 Remove unused variable binding - (bbd9441)
- (renamer) 💄 Slightly reword unknown name error message - (8936a7c)
- (shunter) Fix shunting tests no longer compiling - (4e9d196)
- (cd) Add action to generate changelogs whenever you push to main - (cea8bae)
- (cd) Add action to generate changelogs whenever you push to main - (bdbcfb9)
- (changelog) Add release script - (8dca1bb)
- (changelog) Add cliff.toml - (682cc9f)
- (changelog) Add cliff.toml - (b498ae3)
- (changelog) Add a safety check to the release script and allow aborting it - (c1ec919)
- (changelog) 🐛 Add more safety checking to release.sh and fix weird sed behaviour - (1d01db1)
- (changelog) 🎨 Change changelog generation for tags - (536e580)
- (changelog) 🦺 Ask if we're ok before making git tags - (3e3e457)
- (nix) Add
git-cliff
to devshell - (8a6187e) - (nix) Add
git-cliff
to devshell - (7b5a372)
0.0.2 - 2024-06-01
- (renamer) Add a nice pretty error report for when the renamer catches ambiguous names - (f31a6cd)
- (renamer) Fix heavy-handed ambiguous name checking reporting ambiguity when there actually isn't any! Fixes variable shadowing - (ecb3481)
- (renamer) Change renaming backend to allow multiple names with the same unqualified name - (f61f155)
- (changelog) Update CHANGELOG.md - (0882b33)
0.0.1 - 2024-06-01
- (stdlib) Load all the stdlib files dynamically based on what's in the new stdlib folder - (47e0e90)
- (stdlib) Add Option module to stdlib - (646f1ae)
- (tocore) Improve reporting of
UnknownConstructor
error in ToCore - (8fda8b3)
- (tocore) Fix ToCore not being invoked in topological order, causing unknown name errors - (8737b28)
- (stdlib) Move all stdlib files into new folder - (e7cd134)
- (actions) Remove blank line - (20b7d8a)
- (stdlib) Make main file a bit more fully-fledged - (32b919c)
- (actions) Try deleting this folder - (c35171c)
- (actions) Change the script...? - (4ab2c8f)
- (actions) Run linux builds on self-hosted runner - (9f8f291)
- (actions) Nevermind let's not do that - (a30d954)
- (actions) Log big files - (282fb34)
- (actions) That seemed to work - now remove the logging - (31478e6)
- (logging) Determine the log level based on elaraDebug variable - (93f8f8a)
- (pretty-printing) Improve colourisation of pretty-printer output - (28492c5)
- (pretty-printing) Remove the domain when printing foralls (as it will only ever be type) - (2b5158e)
- (stdlib) Restore the stdlib to its former glo - (0fc83e9)
- (stdlib) Add primitive functions for working with strings - (a582f06)
- (type-infer) Add a new error message in the case of multiple tyapps being detected (which shouldn't happen?) - (7486ea1)
- (codegen) Fix stringLength primitive not boxing integers - (85fcf5a)
- (logging) Remove old debugPretty calls - (64edc03)
- (tests) Fix unit tests not compiling for various reasons - (e0a2955)
- (type-infer) Fix constructor pattern arguments being reversed in type inference - (321fdd6)
- (type-infer) Fix conversion between types when explicitly applying type constructors (eg
def x : Option Int
) - (940e960) - (type-infer) Fix constructor patterns not being completely solved - (1dc7624)
- (type-infer) Fix type inference logging always being on debug - (3b34bb1)
- (type-infer) Fix if/else type inference not always unifying correctly and throwing errors - (33a72c2)
- (type-infer) Improve algorithm for detecting tyapps, fixing some edge cases - (8503c23)
- Fix the tests - (1273624)
- Fix name shadowing in inspection - (56dc353)
- Fix haddock comment - (945cd39)
- Fix latex - (57cb4ac)
- Fix a bunch of warnings :D - (bef63d7)
- Fix some more warnings - (ea6b295)
- Fix more warnings - (877fa2d)
- Fix a naughty parser edge case, but now indentation is broken - (fb64659)
- Fix local let bindings not being annotated properly - (5437b1b)
- Fix parsing tests, make let-binding names unqualified - (16221a2)
- Fix funny quickcheck edge cases - (c231e2a)
- Fix some haddock typos - (543a982)
- Fix let-in error - (9b60ec8)
- Fix prettyprint infinite loop lol - (ace5c19)
- Fix unification with type declarations - (24e2278)
- Fix da nix - (7ed19ef)
- Fix da stack (doesnt rhyme sorry) - (79018aa)
- Fix type inference? - (b05c98a)
- Fix hie - (2b53f88)
- Fix unit tests - (2ef17dd)
- Fix doctests - (f2543c7)
- Fix the pattern parser & add a lot of tests - (94d1669)
- Fix lots of bugs! - (438e69f)
- Fix subtyping on custom types - (c790d2f)
- Fix stupid ugly CI (maybe) - (ad7a872)
- Fix some warnings and refactor even more - (1d96b4d)
- Fix a morbillion more warnings - (be1c891)
- Fix almost all the warnings - (351f7fb)
- Fix a very rare lexer edge case - (b0369fc)
- Fix build error - (c154b25)
- Fix the tests not compiling (oops) - (4a620ee)
- Fix the tests not compiling (oops) - (4ff8661)
- Fix let-in constructs being given the wrong type in core - (e52396e)
- Fix maxLocals for - (1a09f30)
- Fix bug in renaming let statements - (4825d10)
- Fix the cons type - (8813151)
- Fix parse error with higher order functions - (4452451)
- Fix unnecessary type applications being added - (09dc4ba)
- Fix variables in ToCore using the wrong types - (d3da4bb)
- Fix (?) type inference for list literals - (8a20d85)
- Fix CI - (34bbcb0)
- Fix undefined handling - (85a0df4)
- Fix |> and emitting higher order functions - (69b3236)
- Fix more tyapps - (70aae06)
- Fix redundant pattern match warning with Local' & Global' - (cd0ca0c)
- Fix core type instantiation being incorrect - (97427ab)
- Fix match expressions inferring to the wrong type - (ad97cef)
- Fix ci running - (a858457)
- Fix shunt tests - (d017534)
- Fix a bunch of warnings - (aa811c7)
- Fix the unit tests compiling - (b2e838d)
- Fix all tests - (216af73)
- Fix gh workflow - (143afe5)
- Fix order of lambda params - (34b992c)
- Fix weird deveshell bug - (018ad04)
- Fix Show instance for UniqueID - (69abce6)
- Fix a bunch of warnings - (ca5bada)
- Fix tests too - (8ac8089)
- Fix unix build - (02d1936)
- Fix crlf endings breaking lexer - (5c23b0c)
- Fix unit tests - (164dc28)
- Fix jvm separator on windows - (59674d7)
- Fix parsing of constructor patterns with args without parens - (aadac49)
- Fix graph topology due from constructor patterns - (5184f39)
- Fix constructors with multiple fields being invalidly generated - (6fd72ae)
- Fix wrong toString append being used - (a668e0a)
- Fix adt match calling in the wrong order - (a396b22)
- Fix type / kind inference and such - (49fcb62)
- Fix the prettyprinter changes breaking the unit tests - (207856e)
- Fix code generation for constructor patterns with multiple arguments breaking - (6de3e20)
- (stdlib) Move ALL mentions of lists to the stdlib - they are no longer a primitive! - (8e3d367)
- (stdlib) Refactor Elara Stdlib and add list length function - (2fa03be)
- (stdlib) [breaking] Change
readFile
to return String rather than EList - (01f4048) - Refactor tests - (8151cfd)
- Refactors - (718aa8a)
- Refactor HasDependencies to allow multiple keys - (5d1490e)
- Refactor how type constructors are handled in core - (ba962be)
- Slightly tidy up generation of lambdas - (4654676)
- Begin work refactoring lambda generation - keep track of parameter names eerywhere - (9f8ed70)
- (stdlib) Remove mention of EList from readme compiling guide - (624a156)
- Document the pipeline a bit - (efd41ea)
- (type-infer) Add new tests for type application insertion - (a341c65)
- (type-infer) Uncomment test for
forall a. a
tyapps - (e2786a0) - Test - (dd1a893)
- (actions) Try deleting this folder - (fb8c8bd)
- (actions) Change the script...? - (27dc8ea)
- (actions) Run linux builds on self-hosted runner - (e47fa1a)
- (actions) Nevermind let's not do that - (c684cb9)
- (actions) Log big files - (e0158fd)
- (actions) That seemed to work - now remove the logging - (f9a9294)
- (logging) Change back to info logging (really need to make this configurable at runtime) - (7666ae9)
- (nix) Move from mission-control to just - (ba41767)
- (nix) Add the old mission-control scripts back to the justfile - (1508631)
- (stdlib) Remove random list from main file - (85524a1)
- (nix) Update nix flake - (f95de02)