All notable changes from Plume releases will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
0.8.0 - 2024-06-11
- fix(codegen): fixed asynchronous block code generation [
#fix(codegen): fixed asynchronous block code generation
](https://github.com/plume-lang/plume/issues/fix(codegen): fixed asynchronous block code generation) - fix(compiler): fixed return issue with switch desugaring [
#fix(compiler): fixed return issue with switch desugaring
](https://github.com/plume-lang/plume/issues/fix(compiler): fixed return issue with switch desugaring) - fix(std): fixed FFI get_index function [
#fix(std): fixed FFI get_index function
](https://github.com/plume-lang/plume/issues/fix(std): fixed FFI get_index function) - fix(compiler): fixed ANF conversion [
#fix(compiler): fixed ANF conversion
](https://github.com/plume-lang/plume/issues/fix(compiler): fixed ANF conversion) - fix(tc): fixed asynchronous type-checking [
#fix(tc): fixed asynchronous type-checking
](https://github.com/plume-lang/plume/issues/fix(tc): fixed asynchronous type-checking) - fix(compiler): fixed already declared variable in JS codegen [
#fix(compiler): fixed already declared variable in JS codegen
](https://github.com/plume-lang/plume/issues/fix(compiler): fixed already declared variable in JS codegen) - fix(std): fixed map execution order [
#fix(std): fixed map execution order
](https://github.com/plume-lang/plume/issues/fix(std): fixed map execution order) - fix(tc): fixed asynchronous function compilation [
#fix(tc): fixed asynchronous function compilation
](https://github.com/plume-lang/plume/issues/fix(tc): fixed asynchronous function compilation) - fix(compiler): fixed return compilation [
#fix(compiler): fixed return compilation
](https://github.com/plume-lang/plume/issues/fix(compiler): fixed return compilation) - fix(tc): fixed block return type-checking [
#fix(tc): fixed block return type-checking
](https://github.com/plume-lang/plume/issues/fix(tc): fixed block return type-checking) - fix(std): removed node.js package [
#fix(std): removed node.js package
](https://github.com/plume-lang/plume/issues/fix(std): removed node.js package) - fix(git): removed git modules file [
#fix(git): removed git modules file
](https://github.com/plume-lang/plume/issues/fix(git): removed git modules file) - fix(std): removed old standard code [
#fix(std): removed old standard code
](https://github.com/plume-lang/plume/issues/fix(std): removed old standard code) - fix: fixed non-exhaustive patterns [
#fix: fixed non-exhaustive patterns
](https://github.com/plume-lang/plume/issues/fix: fixed non-exhaustive patterns)
- Breaking change: feat(tc): updated typechecker to new AST representation
5711979
- Breaking change: feat(syntax): updated all syntax modules to new AST
fcdd56a
- Breaking change: feat(std): updated standard library with new syntaxes and backend
e33bfe0
- Breaking change: feat(tc): added multi-param extension type-checking
b9927f8
- Breaking change: feat(compiler): added js AST
129d074
- Breaking change: feat(syntax): added await expressions
ab1b1aa
- Breaking change: feat(std): updated standard with new GC library
1284cf4
- Breaking change: feat(std): introduced variable argument print and println
db4cc77
- Breaking change: feat(std): IO functions are now asynchronous
dc373bf
- Breaking change: feat(syntax): added variable argument support
4064dd1
- Breaking change: feat(syntax): added unit-insertion mechanism
be98ea7
- Breaking change: feat(main): added extension library support
3dbc78f
- Breaking change: feat(std): added minimum node.js version
015de4c
- Breaking change: feat(syntax): added multi-param typeclass support
cf911d6
- Breaking change: feat(syntax): added function case expressions
0fbd6d9
- Breaking change: feat(syntax): added muti-library source support
8ba5ba7
- Breaking change: feat(syntax): removed await abstract expr in favor of syntactic sugar
b365551
- Breaking change: feat(js): added asynchronous support in Plume
7962b01
- Breaking change: feat(std): added specific module for unit type
9460069
- Breaking change: feat(std): re-added both xmake and cmake
7c0abe3
- Breaking change: feat(main): removed unused codes
c620dc2
- Breaking change: feat(syntax): added exhaustive return insertion
b95b0a5
- Breaking change: feat(std): added wait function declaration
b58812b
- Breaking change: feat(std): added nested option function helper
c782b10
- Breaking change: feat(main): removed SSA pass temporarily
e79e609
- Breaking change: feat(main): updated JS translation function call
93e6909
- Breaking change: feat(git): removed root option from script builder
3d2127a
0.7.4 - 2024-05-26
- build(git): updated runtime submodule
414662d
- build(git): updated runtime submodule
3e9baa0
- build(git): updated runtime submodule
42625fa
0.7.3 - 2024-05-26
- fix(compiler): fixed dead code elimination with variable declare [
#fix(compiler): fixed dead code elimination with variable declare
](https://github.com/plume-lang/plume/issues/fix(compiler): fixed dead code elimination with variable declare) - fix(tc): fixed some typeclass related code [
#fix(tc): fixed some typeclass related code
](https://github.com/plume-lang/plume/issues/fix(tc): fixed some typeclass related code)
- Breaking change: feat(std): added some list operations
65b57cf
- Breaking change: feat(lang): added variable forward declaration syntax support
1ed49c5
- docs(tc): commented full typechecker code
0490862
0.7.2 - 2024-05-23
- fix(tc): removed unwanted print from typechecker [
#fix(tc): removed unwanted print from typechecker
](https://github.com/plume-lang/plume/issues/fix(tc): removed unwanted print from typechecker) - fix(tc): fixed super-interface removal in typechecker [
#fix(tc): fixed super-interface removal in typechecker
](https://github.com/plume-lang/plume/issues/fix(tc): fixed super-interface removal in typechecker) - fix(llir): fixed choice between store local and store global [
#fix(llir): fixed choice between store local and store global
](https://github.com/plume-lang/plume/issues/fix(llir): fixed choice between store local and store global) - fix(compiler): fixed ADT-nested functions in switch removal [
#fix(compiler): fixed ADT-nested functions in switch removal
](https://github.com/plume-lang/plume/issues/fix(compiler): fixed ADT-nested functions in switch removal) - fix(cc): rewrote entirely closure conversion [
#fix(cc): rewrote entirely closure conversion
](https://github.com/plume-lang/plume/issues/fix(cc): rewrote entirely closure conversion) - fix(tc): fixed superclass discharging [
#fix(tc): fixed superclass discharging
](https://github.com/plume-lang/plume/issues/fix(tc): fixed superclass discharging) - fix(std): fixed standard library according to new typechecker errors [
#fix(std): fixed standard library according to new typechecker errors
](https://github.com/plume-lang/plume/issues/fix(std): fixed standard library according to new typechecker errors) - fix(compiler): fixed closure conversion dictionary generation order [
#fix(compiler): fixed closure conversion dictionary generation order
](https://github.com/plume-lang/plume/issues/fix(compiler): fixed closure conversion dictionary generation order) - fix(tc): fixed drunkely error in extension and declaration typechecking [
#fix(tc): fixed drunkely error in extension and declaration typechecking
](https://github.com/plume-lang/plume/issues/fix(tc): fixed drunkely error in extension and declaration typechecking) - fix(std): fixed standard with orphan extensions [
#fix(std): fixed standard with orphan extensions
](https://github.com/plume-lang/plume/issues/fix(std): fixed standard with orphan extensions) - fix(tc): fixed extension typechecking by providing better error handling [
#fix(tc): fixed extension typechecking by providing better error handling
](https://github.com/plume-lang/plume/issues/fix(tc): fixed extension typechecking by providing better error handling) - fix(parser): fixed orphan extension names [
#fix(parser): fixed orphan extension names
](https://github.com/plume-lang/plume/issues/fix(parser): fixed orphan extension names) - fix(std): fixed standard library with new errors [
#fix(std): fixed standard library with new errors
](https://github.com/plume-lang/plume/issues/fix(std): fixed standard library with new errors) - fix(main): removed temporarily memory module import [
#fix(main): removed temporarily memory module import
](https://github.com/plume-lang/plume/issues/fix(main): removed temporarily memory module import) - fix(language): removed memory manager due to critical issue [
#fix(language): removed memory manager due to critical issue
](https://github.com/plume-lang/plume/issues/fix(language): removed memory manager due to critical issue) - fix(compiler): fixed jumps, locals variables and return compilation [
#fix(compiler): fixed jumps, locals variables and return compilation
](https://github.com/plume-lang/plume/issues/fix(compiler): fixed jumps, locals variables and return compilation) - fix(tc): added default position for errors [
#fix(tc): added default position for errors
](https://github.com/plume-lang/plume/issues/fix(tc): added default position for errors) - fix(tc): fixed local declaration typechecking with qualifiers [
#fix(tc): fixed local declaration typechecking with qualifiers
](https://github.com/plume-lang/plume/issues/fix(tc): fixed local declaration typechecking with qualifiers) - fix(parser): optimized literal with string interpolation parsing [
#fix(parser): optimized literal with string interpolation parsing
](https://github.com/plume-lang/plume/issues/fix(parser): optimized literal with string interpolation parsing)
- Breaking change: feat(language): added WIP memory management reference counting algorithm
392691f
- Breaking change: feat(compiler): removed dictionary resolving step
59d3b33
- Breaking change: feat(std): added some new standard functions
86bbac4
- Breaking change: feat(syntax): added useless block removal step
399f4bb
- Breaking change: feat(lang): added support for orphan extensions
3d65ab1
- Breaking change: feat(std): added complex number datatype
138d9e5
- Breaking change: feat(std): added monadic interface
ec0e8da
- Breaking change: feat(tc): added new error messages for extensions
26e33c8
- Breaking change: feat(std): added GC functions
97a4647
- Breaking change: feat(std): added product interface to fix orphan extension issue
752d8ea
- Breaking change: feat(tc): added error handling for already defined function in instance
660c6a8
- Breaking change: feat(language): added support for multiple interface inheritance
2e89641
- Breaking change: feat(type): added special compilation case for ADTs
612bb3e
- Breaking change: feat(std): added list equality
f3bd57c
- Breaking change: feat(main): removed dictionary solving step from main entry
d3d2542
- Breaking change: feat(main): added dictionary resolving step in main app
4300229
- Breaking change: feat(ffi): added more precise char_to_string error message
cd7b5b2
- Breaking change: feat(main): added block removal step
4400c02
- Breaking change: feat(main): added memory management step
dff2ce5
0.7.1 - 2024-05-18
- fix(tc): fixed return check for functions without specified return-type [
#fix(tc): fixed return check for functions without specified return-type
](https://github.com/plume-lang/plume/issues/fix(tc): fixed return check for functions without specified return-type) - fix(std): added missing returns [
#fix(std): added missing returns
](https://github.com/plume-lang/plume/issues/fix(std): added missing returns) - fix(tc): fixed critical issue with super-interfaces order [
#fix(tc): fixed critical issue with super-interfaces order
](https://github.com/plume-lang/plume/issues/fix(tc): fixed critical issue with super-interfaces order)
- Breaking change: feat(tc): added no-return security
8e4cbe3
- Breaking change: feat(syntax): added type aliases to Plume
e6fd510
- refactor(compiler): improved compiler errors in assembler
737bf27
0.7 - 2024-05-17
- fix(assembler): fixed condition jump optimization [
#fix(assembler): fixed condition jump optimization
](https://github.com/plume-lang/plume/issues/fix(assembler): fixed condition jump optimization) - fix(compiler): fixed library compilation to bytecode [
#fix(compiler): fixed library compilation to bytecode
](https://github.com/plume-lang/plume/issues/fix(compiler): fixed library compilation to bytecode) - fix(parser): fixed operator functions being not parsed [
#fix(parser): fixed operator functions being not parsed
](https://github.com/plume-lang/plume/issues/fix(parser): fixed operator functions being not parsed) - fix(compiler): fixed LLIR compilation [
#fix(compiler): fixed LLIR compilation
](https://github.com/plume-lang/plume/issues/fix(compiler): fixed LLIR compilation) - fix(tc): fixed type-extension generics for declarations [
#fix(tc): fixed type-extension generics for declarations
](https://github.com/plume-lang/plume/issues/fix(tc): fixed type-extension generics for declarations) - fix(tc): removed Instance type [
#fix(tc): removed Instance type
](https://github.com/plume-lang/plume/issues/fix(tc): removed Instance type)
- Breaking change: feat(compiler): added Low Level IR compilation step
682ed38
- Breaking change: feat(tc): added new generic and type extension representation
132ac36
- Breaking change: feat(std): rewritten standard library with new extension system
ef74346
- Breaking change: feat(tc): re-created extension typechecking
0ddb967
- Breaking change: feat(tc): updated all checker modules with new type-class API
f86d20a
- Breaking change: feat(typeclass): added some type-class related resolution functions
8289dd4
- Breaking change: feat(compiler): added final bytecode assembler
7070ec2
- Breaking change: feat: updated constraints module with new type-class API
7b48b58
- Breaking change: feat(compiler): added bytecode serialization step
a057e70
- Breaking change: feat(syntax): added new interface keyword
1d178c1
- Breaking change: feat(compiler): added label transformation pass
d98c5ea
- Breaking change: feat(tc): added interface type-checking
fd22a38
- Breaking change: feat(lib): added string color library
e9592b5
- Breaking change: feat(tlir): added some instance related expressions
38a0831
- Breaking change: feat(parser): added basic string interpolation parsing
af501dc
- Breaking change: feat: updated main entry app
c844626
- Breaking change: feat(std): added standard int_to_str function
86a2095
- Breaking change: feat(compiler): added instance pre-compilation in type erasure step
dc4b6cb
- Breaking change: feat(compiler): added default unit returning in functions assembler
a6e45b8
- Breaking change: feat(std): added to_str extension for string type
b163582
- Breaking change: feat(lib): added withRef IO function
9c57bcf
- Breaking change: feat(main): re-added standard library compilation to toolchain
9d90132
0.6.6 - 2024-05-04
- fix(error): fixed error handling to stdout instead of stderr [
#fix(error): fixed error handling to stdout instead of stderr
](https://github.com/plume-lang/plume/issues/fix(error): fixed error handling to stdout instead of stderr)
- docs(example): added basic error code
efad62c
0.6.5 - 2024-04-30
- fix(xmake): removed multiple rules in standard build [
#fix(xmake): removed multiple rules in standard build
](https://github.com/plume-lang/plume/issues/fix(xmake): removed multiple rules in standard build)
- Breaking change: feat(vm): introduced local negative index lookup resolution
cd11ac3
- build(git): updated runtime submodule
0fe0364
0.6.4 - 2024-04-29
- build(git): updated runtime submodule
5fef5e6
0.6.3 - 2024-04-28
- fix(tc): fixed unification direction [
#fix(tc): fixed unification direction
](https://github.com/plume-lang/plume/issues/fix(tc): fixed unification direction) - fix(encoding): fixed encoding with conditional macro resolution [
#fix(encoding): fixed encoding with conditional macro resolution
](https://github.com/plume-lang/plume/issues/fix(encoding): fixed encoding with conditional macro resolution)
0.6.2 - 2024-04-28
- fix(encoding): fixed Windows bad encoding issue [
#fix(encoding): fixed Windows bad encoding issue
](https://github.com/plume-lang/plume/issues/fix(encoding): fixed Windows bad encoding issue)
0.6.1 - 2024-04-27
- fix(ci): fixed github ci overwriting cabal file [
#fix(ci): fixed github ci overwriting cabal file
](https://github.com/plume-lang/plume/issues/fix(ci): fixed github ci overwriting cabal file)
- Breaking change: feat(tc/wip): working on practical redundancy checking
7cdaa31
- build(ci): added cabal configure fix
484d0b4
0.6 - 2024-04-27
- fix(std): removed closure types from ffi [
#fix(std): removed closure types from ffi
](https://github.com/plume-lang/plume/issues/fix(std): removed closure types from ffi) - fix(std): fixed redudance issue with some list operations [
#fix(std): fixed redudance issue with some list operations
](https://github.com/plume-lang/plume/issues/fix(std): fixed redudance issue with some list operations)
- Breaking change: feat(tc): added exhaustiveness and redundance checks
14c3e96
- Breaking change: feat(error): improved error messages in Plume
cacd65b
- Breaking change: feat(plume): added variable extension member support
58c27ef
- Breaking change: feat(error): added better error handling utility functions
f5769c5
- Breaking change: feat(tc): added better return errors
e4a9c3f
- Breaking change: feat(error): added better parser error backtracking
b8d60a1
- Breaking change: feat(pretty): added warning thrower function
633b284
0.5.2 - 2024-04-25
- fix(ci): removed CLang installation on macOS [
#fix(ci): removed CLang installation on macOS
](https://github.com/plume-lang/plume/issues/fix(ci): removed CLang installation on macOS)
0.5.1 - 2024-04-25
- fix(xmake): added system=false flag for libcurl package [
#fix(xmake): added system=false flag for libcurl package
](https://github.com/plume-lang/plume/issues/fix(xmake): added system=false flag for libcurl package) - fix(compiler): fixed temporaly dead code elmimination critical issue [
#fix(compiler): fixed temporaly dead code elmimination critical issue
](https://github.com/plume-lang/plume/issues/fix(compiler): fixed temporaly dead code elmimination critical issue)
- build(ci): added CLang installation in build action
b7ab524
- build(ci): fixed CLang action on x64 macOS
85f3fe2
- build(git): updated runtime submodule
4d717d6
0.5 - 2024-04-25
- fix(script): fixed root build style in python script [
#fix(script): fixed root build style in python script
](https://github.com/plume-lang/plume/issues/fix(script): fixed root build style in python script) - fix(std): added missing type cases in print_helper [
#fix(std): added missing type cases in print_helper
](https://github.com/plume-lang/plume/issues/fix(std): added missing type cases in print_helper) - fix(bench): fixed benchmark runner script compatibility [
#fix(bench): fixed benchmark runner script compatibility
](https://github.com/plume-lang/plume/issues/fix(bench): fixed benchmark runner script compatibility)
- Breaking change: feat(perf): rewritten typechecker using HM algorithm J
254d214
- Breaking change: feat(std): updated standard library with new runtime API
ce1c626
- Breaking change: feat(perf): added arithmetic function inlining
8f8099e
- Breaking change: feat(compiler): adapted native compilation to new syntax API
6c83a20
- Breaking change: feat(compiler): updated type erasure with new typechecker API
f5e2e08
- Breaking change: feat(translation): removed absolute path resolution for natives
3fea52e
- Breaking change: feat(common): added generic name getter function
c263bc3
- Breaking change: feat(std): updated library extension
ccdff87
0.4.2 - 2024-04-16
- fix(script): fixed project builder python script [
#fix(script): fixed project builder python script
](https://github.com/plume-lang/plume/issues/fix(script): fixed project builder python script) - fix(script): improved xmake build [
#fix(script): improved xmake build
](https://github.com/plume-lang/plume/issues/fix(script): improved xmake build) - fix(translation): fixed bad-path local passing [
#fix(translation): fixed bad-path local passing
](https://github.com/plume-lang/plume/issues/fix(translation): fixed bad-path local passing)
- build(script): added xmake fetching command
7b2e499
- build(ci): added dependency installation
9477cdf
0.4.1 - 2024-04-16
- fix(script): fixed xmake build in python build script [
#fix(script): fixed xmake build in python build script
](https://github.com/plume-lang/plume/issues/fix(script): fixed xmake build in python build script)
0.4 - 2024-04-16
- fix(parser): fixed char literal parsing [
#fix(parser): fixed char literal parsing
](https://github.com/plume-lang/plume/issues/fix(parser): fixed char literal parsing) - fix(std): fixed string concatenation [
#fix(std): fixed string concatenation
](https://github.com/plume-lang/plume/issues/fix(std): fixed string concatenation) - fix(parser): fixed space consumer on toplevels [
#fix(parser): fixed space consumer on toplevels
](https://github.com/plume-lang/plume/issues/fix(parser): fixed space consumer on toplevels) - fix(compiler): fixed return insertion [
#fix(compiler): fixed return insertion
](https://github.com/plume-lang/plume/issues/fix(compiler): fixed return insertion) - fix(tc): fixed return type insertion in extension member [
#fix(tc): fixed return type insertion in extension member
](https://github.com/plume-lang/plume/issues/fix(tc): fixed return type insertion in extension member) - fix(tc): fixed return typechecking in blocks [
#fix(tc): fixed return typechecking in blocks
](https://github.com/plume-lang/plume/issues/fix(tc): fixed return typechecking in blocks) - fix(parser): fixed char literal parsing [
#fix(parser): fixed char literal parsing
](https://github.com/plume-lang/plume/issues/fix(parser): fixed char literal parsing) - fix(std): removed use of string interpolation temporarily [
#fix(std): removed use of string interpolation temporarily
](https://github.com/plume-lang/plume/issues/fix(std): removed use of string interpolation temporarily) - fix(perf): inlined some substitution related functions [
#fix(perf): inlined some substitution related functions
](https://github.com/plume-lang/plume/issues/fix(perf): inlined some substitution related functions) - fix(perf): removed use of lists and most useless try combinators [
#fix(perf): removed use of lists and most useless try combinators
](https://github.com/plume-lang/plume/issues/fix(perf): removed use of lists and most useless try combinators) - fix(monad): removed reader stack monad from parser [
#fix(monad): removed reader stack monad from parser
](https://github.com/plume-lang/plume/issues/fix(monad): removed reader stack monad from parser) - fix(markdown): fixed contributing table of contents [
#fix(markdown): fixed contributing table of contents
](https://github.com/plume-lang/plume/issues/fix(markdown): fixed contributing table of contents) - fix(parser): added generics parsing for functions [
#fix(parser): added generics parsing for functions
](https://github.com/plume-lang/plume/issues/fix(parser): added generics parsing for functions) - fix(tc): fixed function closure application in typechecker [
#fix(tc): fixed function closure application in typechecker
](https://github.com/plume-lang/plume/issues/fix(tc): fixed function closure application in typechecker) - fix(std): fixed unhandled case in IO module [
#fix(std): fixed unhandled case in IO module
](https://github.com/plume-lang/plume/issues/fix(std): fixed unhandled case in IO module) - fix(example): fixed example syntax [
#fix(example): fixed example syntax
](https://github.com/plume-lang/plume/issues/fix(example): fixed example syntax) - fix(std): updated all STD with new syntax [
#fix(std): updated all STD with new syntax
](https://github.com/plume-lang/plume/issues/fix(std): updated all STD with new syntax) - fix(monad): fixed monad parser initial position [
#fix(monad): fixed monad parser initial position
](https://github.com/plume-lang/plume/issues/fix(monad): fixed monad parser initial position) - fix(desugaring): fixed duplicated switch variable [
#fix(desugaring): fixed duplicated switch variable
](https://github.com/plume-lang/plume/issues/fix(desugaring): fixed duplicated switch variable) - fix(compiler): fixed pattern matching AND issue [
#fix(compiler): fixed pattern matching AND issue
](https://github.com/plume-lang/plume/issues/fix(compiler): fixed pattern matching AND issue) - fix(desugar): fixed variable conflict with pattern [
#fix(desugar): fixed variable conflict with pattern
](https://github.com/plume-lang/plume/issues/fix(desugar): fixed variable conflict with pattern) - fix(desugaring): fixed switch condition desugaring [
#fix(desugaring): fixed switch condition desugaring
](https://github.com/plume-lang/plume/issues/fix(desugaring): fixed switch condition desugaring) - fix(compiler): improved return insertion in single statement blocks [
#fix(compiler): improved return insertion in single statement blocks
](https://github.com/plume-lang/plume/issues/fix(compiler): improved return insertion in single statement blocks) - fix(tc): fixed extension calls by creating constraints [
#fix(tc): fixed extension calls by creating constraints
](https://github.com/plume-lang/plume/issues/fix(tc): fixed extension calls by creating constraints) - fix(parser): fixed tuple parsing conflict [
#fix(parser): fixed tuple parsing conflict
](https://github.com/plume-lang/plume/issues/fix(parser): fixed tuple parsing conflict) - fix(logging): removed useless print [
#fix(logging): removed useless print
](https://github.com/plume-lang/plume/issues/fix(logging): removed useless print) - fix(tc): fixed constraint solving on extensions with same parent generics [
#fix(tc): fixed constraint solving on extensions with same parent generics
](https://github.com/plume-lang/plume/issues/fix(tc): fixed constraint solving on extensions with same parent generics) - fix(tc): fixed critical issue with local constraint solving [
#fix(tc): fixed critical issue with local constraint solving
](https://github.com/plume-lang/plume/issues/fix(tc): fixed critical issue with local constraint solving) - fix(typo): fixed some big typo issues in readme [
#fix(typo): fixed some big typo issues in readme
](https://github.com/plume-lang/plume/issues/fix(typo): fixed some big typo issues in readme)
- Breaking change: feat(parser): added and updated some parser modules
60dfe61
- Breaking change: feat(parser): added new Plume syntax parser
2f672f6
- Breaking change: feat(std): added many functions to standard datatypes
8cfa892
- Breaking change: feat(compiler): implemented mutability in compiler
a7d6ce4
- Breaking change: feat(compiler): added closure mutability support
ec4558e
- Breaking change: feat(translation): using SortedList instead of Haskell lists
a883c13
- Breaking change: feat(parser): added mutable declarations
bd825a9
- Breaking change: feat(tc): implemented mutability checking
54b41a1
- Breaking change: feat(std): added some mutability examples
950000d
- Breaking change: feat(std): replaced list slice with ffi call
ace208c
- Breaking change: feat(std/io): organized standard IO library
c62304a
- Breaking change: feat(parser): added mutability field access shortcut
eccad0d
- Breaking change: feat(std): added fetch function
7993693
- Breaking change: feat(plume): implemented unmut operation checking and compilation
98b910a
- Breaking change: feat(std): added to_string mutable case
587b837
- Breaking change: feat(ffi): added make_err and make_ok functions
829da99
- Breaking change: feat(tc): added datatype information ref
71becce
- Breaking change: feat(ffi): added make_unit function
76c0989
- Breaking change: feat(std): added input function
3ed0fff
- Breaking change: feat(parser): added unmut operator
22a831c
- Breaking change: feat(parser): added ability to parse indented lists
96085f8
- Breaking change: feat(tc): added error on already defined variable
21cdc1c
- Breaking change: feat(monad): added parseTest function
5a4ecc3
- Breaking change: feat(std): added not equal operator on int and char
35304b6
- Breaking change: feat(tc): added return type backtrack to local
69117ab
0.3 - 2024-04-06
- fix(std): fixed int slice [
#fix(std): fixed int slice
](https://github.com/plume-lang/plume/issues/fix(std): fixed int slice) - fix(parser): fixed tuple and closure priority [
#fix(parser): fixed tuple and closure priority
](https://github.com/plume-lang/plume/issues/fix(parser): fixed tuple and closure priority) - fix(std): fixed DLL compilation on windows [
#fix(std): fixed DLL compilation on windows
](https://github.com/plume-lang/plume/issues/fix(std): fixed DLL compilation on windows) - fix(parser): fixed postfix slicing [
#fix(parser): fixed postfix slicing
](https://github.com/plume-lang/plume/issues/fix(parser): fixed postfix slicing) - fix(std): fixed equality operator on char [
#fix(std): fixed equality operator on char
](https://github.com/plume-lang/plume/issues/fix(std): fixed equality operator on char) - fix(compiler): fixed return insertion and dead code analysis [
#fix(compiler): fixed return insertion and dead code analysis
](https://github.com/plume-lang/plume/issues/fix(compiler): fixed return insertion and dead code analysis) - fix(tc): fixed closure return type checking [
#fix(tc): fixed closure return type checking
](https://github.com/plume-lang/plume/issues/fix(tc): fixed closure return type checking) - fix(parser): fixed import parsing in import parser [
#fix(parser): fixed import parsing in import parser
](https://github.com/plume-lang/plume/issues/fix(parser): fixed import parsing in import parser) - fix(plume): added native function duplicata check [
#fix(plume): added native function duplicata check
](https://github.com/plume-lang/plume/issues/fix(plume): added native function duplicata check) - fix(tc): fixed issue with duplicated extensions [
#fix(tc): fixed issue with duplicated extensions
](https://github.com/plume-lang/plume/issues/fix(tc): fixed issue with duplicated extensions)
- Breaking change: feat(std): added indexing methods on str and lists
d449ce5
- Breaking change: feat(std): added slicing methods for str and list
ece23e8
- Breaking change: feat(syntax): added index slicing to plume
e1cd8b4
- Breaking change: feat(parser): added indexing expression
8df1839
- Breaking change: feat(std): added some char related methods
4dd0f21
- Breaking change: feat(syntax): replaced colon with double dot for slicing
2c22f85
0.2 - 2024-04-04
- fix(script): fixed another issue about file extension [
#fix(script): fixed another issue about file extension
](https://github.com/plume-lang/plume/issues/fix(script): fixed another issue about file extension) - fix(script): fixed dumb build_project script error [
#fix(script): fixed dumb build_project script error
](https://github.com/plume-lang/plume/issues/fix(script): fixed dumb build_project script error) - fix(cabal): fixed cabal package name causing action to fail [
#fix(cabal): fixed cabal package name causing action to fail
](https://github.com/plume-lang/plume/issues/fix(cabal): fixed cabal package name causing action to fail) - fix(std): fixed println and execute_command signatures [
#fix(std): fixed println and execute_command signatures
](https://github.com/plume-lang/plume/issues/fix(std): fixed println and execute_command signatures) - fix(compiler): fixed useless nil return statements [
#fix(compiler): fixed useless nil return statements
](https://github.com/plume-lang/plume/issues/fix(compiler): fixed useless nil return statements) - fix(cfg): fixed compilation issue with statements as expression [
#fix(cfg): fixed compilation issue with statements as expression
](https://github.com/plume-lang/plume/issues/fix(cfg): fixed compilation issue with statements as expression) - fix(tc): added local constraint solving on extension methods [
#fix(tc): added local constraint solving on extension methods
](https://github.com/plume-lang/plume/issues/fix(tc): added local constraint solving on extension methods) - fix(desugar): fixed return overuse in switch resolution [
#fix(desugar): fixed return overuse in switch resolution
](https://github.com/plume-lang/plume/issues/fix(desugar): fixed return overuse in switch resolution)
- Breaking change: feat(parser): added native group definition support
a1ed222
- Breaking change: feat(parser): added indented dot chaining operator support
af7f1fe
- Breaking change: feat(std): removed dylib extension in standard library
575c695
- Breaking change: feat(ffi): removed need of ffi file extension
518306b
- fix(ci): fixed permission on build action [
#fix(ci): fixed permission on build action
](https://github.com/plume-lang/plume/issues/fix(ci): fixed permission on build action) - fix(ci): added missing release [
#fix(ci): added missing release
](https://github.com/plume-lang/plume/issues/fix(ci): added missing release) - fix(ci): fixed missing comma in Compress-Archive [
#fix(ci): fixed missing comma in Compress-Archive
](https://github.com/plume-lang/plume/issues/fix(ci): fixed missing comma in Compress-Archive) - fix(scripts): fixed f-string issue with pypy 3.10 [
#fix(scripts): fixed f-string issue with pypy 3.10
](https://github.com/plume-lang/plume/issues/fix(scripts): fixed f-string issue with pypy 3.10) - fix(ffi): fixed portability for file stats functions [
#fix(ffi): fixed portability for file stats functions
](https://github.com/plume-lang/plume/issues/fix(ffi): fixed portability for file stats functions) - fix(action): removed cc compiler test [
#fix(action): removed cc compiler test
](https://github.com/plume-lang/plume/issues/fix(action): removed cc compiler test) - fix(compiler): fixed local reset on function definition [
#fix(compiler): fixed local reset on function definition
](https://github.com/plume-lang/plume/issues/fix(compiler): fixed local reset on function definition) - fix(tc): fixed extension solving [
#fix(tc): fixed extension solving
](https://github.com/plume-lang/plume/issues/fix(tc): fixed extension solving) - fix(tc): fixed constraint solving on extensions [
#fix(tc): fixed constraint solving on extensions
](https://github.com/plume-lang/plume/issues/fix(tc): fixed constraint solving on extensions) - fix(parser): now parsing correctly operators across modules [
#fix(parser): now parsing correctly operators across modules
](https://github.com/plume-lang/plume/issues/fix(parser): now parsing correctly operators across modules) - fix(solver): introduced cyclic extension solving [
#fix(solver): introduced cyclic extension solving
](https://github.com/plume-lang/plume/issues/fix(solver): introduced cyclic extension solving) - fix(extensions): fixed extension type erasure code ordering [
#fix(extensions): fixed extension type erasure code ordering
](https://github.com/plume-lang/plume/issues/fix(extensions): fixed extension type erasure code ordering) - fix(assembler): fixed global variable storage in local scopes [
#fix(assembler): fixed global variable storage in local scopes
](https://github.com/plume-lang/plume/issues/fix(assembler): fixed global variable storage in local scopes) - fix(compiler): fixed return-less ifs [
#fix(compiler): fixed return-less ifs
](https://github.com/plume-lang/plume/issues/fix(compiler): fixed return-less ifs) - fix(lexer): fixed non indented parser [
#fix(lexer): fixed non indented parser
](https://github.com/plume-lang/plume/issues/fix(lexer): fixed non indented parser) - fix(tc): fixed plume typechecker return type [
#fix(tc): fixed plume typechecker return type
](https://github.com/plume-lang/plume/issues/fix(tc): fixed plume typechecker return type) - fix(script): fixed python build and compile scripts [
#fix(script): fixed python build and compile scripts
](https://github.com/plume-lang/plume/issues/fix(script): fixed python build and compile scripts) - fix(module): added standard module resolution [
#fix(module): added standard module resolution
](https://github.com/plume-lang/plume/issues/fix(module): added standard module resolution) - fix(plume): removed some buggy features in extension type system [
#fix(plume): removed some buggy features in extension type system
](https://github.com/plume-lang/plume/issues/fix(plume): removed some buggy features in extension type system) - fix(bytecode): removed useless instructions [
#fix(bytecode): removed useless instructions
](https://github.com/plume-lang/plume/issues/fix(bytecode): removed useless instructions) - fix(compiler): fixed critical issue with functions [
#fix(compiler): fixed critical issue with functions
](https://github.com/plume-lang/plume/issues/fix(compiler): fixed critical issue with functions) - fix(compiler): started fixing extension compilation [
#fix(compiler): started fixing extension compilation
](https://github.com/plume-lang/plume/issues/fix(compiler): started fixing extension compilation) - fix(runtime): removed old runtime code [
#fix(runtime): removed old runtime code
](https://github.com/plume-lang/plume/issues/fix(runtime): removed old runtime code) - fix(compiler): fixed pattern match removal [
#fix(compiler): fixed pattern match removal
](https://github.com/plume-lang/plume/issues/fix(compiler): fixed pattern match removal) - fix(tc): removed useless print call [
#fix(tc): removed useless print call
](https://github.com/plume-lang/plume/issues/fix(tc): removed useless print call) - fix(compiler): big fix of some compiler issues [
#fix(compiler): big fix of some compiler issues
](https://github.com/plume-lang/plume/issues/fix(compiler): big fix of some compiler issues) - fix(tc): fixed typechecker issue with blocks [
#fix(tc): fixed typechecker issue with blocks
](https://github.com/plume-lang/plume/issues/fix(tc): fixed typechecker issue with blocks) - fix(compiler): fixed some of backend passes [
#fix(compiler): fixed some of backend passes
](https://github.com/plume-lang/plume/issues/fix(compiler): fixed some of backend passes) - fix(translation): added missing List case in translation [
#fix(translation): added missing List case in translation
](https://github.com/plume-lang/plume/issues/fix(translation): added missing List case in translation) - fix(tc): fixed generic remapping on declarations [
#fix(tc): fixed generic remapping on declarations
](https://github.com/plume-lang/plume/issues/fix(tc): fixed generic remapping on declarations) - fix(parser): fixed custom operator parsing [
#fix(parser): fixed custom operator parsing
](https://github.com/plume-lang/plume/issues/fix(parser): fixed custom operator parsing) - fix(tc): fixed type application constraint solving issue [
#fix(tc): fixed type application constraint solving issue
](https://github.com/plume-lang/plume/issues/fix(tc): fixed type application constraint solving issue) - fix(parser): fixed custom operator ambiguity [
#fix(parser): fixed custom operator ambiguity
](https://github.com/plume-lang/plume/issues/fix(parser): fixed custom operator ambiguity) - fix(solving): fixed really nested type extensions constraints solving [
#fix(solving): fixed really nested type extensions constraints solving
](https://github.com/plume-lang/plume/issues/fix(solving): fixed really nested type extensions constraints solving) - fix(tc): fixed nested type extension predicate solving [
#fix(tc): fixed nested type extension predicate solving
](https://github.com/plume-lang/plume/issues/fix(tc): fixed nested type extension predicate solving) - fix(tc): fixed locality issue in synthesizing [
#fix(tc): fixed locality issue in synthesizing
](https://github.com/plume-lang/plume/issues/fix(tc): fixed locality issue in synthesizing) - fix(tc): fixed monadic state operations [
#fix(tc): fixed monadic state operations
](https://github.com/plume-lang/plume/issues/fix(tc): fixed monadic state operations) - fix(parser): fixed ambiguity with arrow type and closures [
#fix(parser): fixed ambiguity with arrow type and closures
](https://github.com/plume-lang/plume/issues/fix(parser): fixed ambiguity with arrow type and closures) - fix(tc): added Eq constraint to Plume types [
#fix(tc): added Eq constraint to Plume types
](https://github.com/plume-lang/plume/issues/fix(tc): added Eq constraint to Plume types) - fix(lexer): fixed indentation parsing functions [
#fix(lexer): fixed indentation parsing functions
](https://github.com/plume-lang/plume/issues/fix(lexer): fixed indentation parsing functions) - fix(row-poly): removed row polymorphism in Plume [
#fix(row-poly): removed row polymorphism in Plume
](https://github.com/plume-lang/plume/issues/fix(row-poly): removed row polymorphism in Plume) - fix(translation): fixed error not throwing [
#fix(translation): fixed error not throwing
](https://github.com/plume-lang/plume/issues/fix(translation): fixed error not throwing) - fix(pretty): fixed annotation pretty printing [
#fix(pretty): fixed annotation pretty printing
](https://github.com/plume-lang/plume/issues/fix(pretty): fixed annotation pretty printing) - fix(temp): throwing default implementation error on require resolution [
#fix(temp): throwing default implementation error on require resolution
](https://github.com/plume-lang/plume/issues/fix(temp): throwing default implementation error on require resolution) - fix(parser): parsing now reset IORef at end [
#fix(parser): parsing now reset IORef at end
](https://github.com/plume-lang/plume/issues/fix(parser): parsing now reset IORef at end) - fix(readme): fixed sentence meaning in readme [
#fix(readme): fixed sentence meaning in readme
](https://github.com/plume-lang/plume/issues/fix(readme): fixed sentence meaning in readme) - fix(pretty): fixed record pretty printing [
#fix(pretty): fixed record pretty printing
](https://github.com/plume-lang/plume/issues/fix(pretty): fixed record pretty printing) - fix(typo): fixed typography issue in readme [
#fix(typo): fixed typography issue in readme
](https://github.com/plume-lang/plume/issues/fix(typo): fixed typography issue in readme) - fix(parser): fixed boolean literal parsing missing [
#fix(parser): fixed boolean literal parsing missing
](https://github.com/plume-lang/plume/issues/fix(parser): fixed boolean literal parsing missing) - fix(parser): fixed not operator precedence [
#fix(parser): fixed not operator precedence
](https://github.com/plume-lang/plume/issues/fix(parser): fixed not operator precedence) - fix(parser): removed non-sense empty row type [
#fix(parser): removed non-sense empty row type
](https://github.com/plume-lang/plume/issues/fix(parser): removed non-sense empty row type) - fix(parser): fixed postfix operators (recsel, recrem, funcall) [
#fix(parser): fixed postfix operators (recsel, recrem, funcall)
](https://github.com/plume-lang/plume/issues/fix(parser): fixed postfix operators (recsel, recrem, funcall))
- Breaking change: feat(plume): completely rewrote Plume typechecker
a76d17b
- Breaking change: feat(compiler): added a MVP bytecode assembler
8019a8b
- Breaking change: feat(require): added Require expressions support
72d0fc1
- Breaking change: feat(macro): implemented macro expansion
2f0124f
- Breaking change: feat(plume): introduced user defined datatypes
8e64629
- Breaking change: feat(tc): added basic type extension typechecking
59b5b6b
- Breaking change: feat(tc): added typechecker prototype without extensions
f50702a
- Breaking change: feat(tc): added new monadic operations for typechecking
165b8f2
- Breaking change: feat(parser): added expression parser
af100e7
- Breaking change: feat(std): refined standard library with fresh new datatypes
0b36671
- Breaking change: feat(translation): improved error handling
c5421af
- Breaking change: feat(tc): upgraded typechecker extension system to the next level
f5a9b87
- Breaking change: feat(parser): added some basic lexing and indentation functions
27e7c33
- Breaking change: feat(pretty): generalized record prettyprinting
6075717
- Breaking change: feat(compiler-cc): added basic untyped closure conversion algorithm
fbc5b96
- Breaking change: feat(tc): added even more powerful constraint solving on extensions
4a19d92
- Breaking change: feat(syntax): added custom operator syntax to Plume
5250792
- Breaking change: feat(plume): introduced full FFI system in Plume
72342d7
- Breaking change: feat(syntax): added generic property declaration
796d444
- Breaking change: feat(parser): made indentation parser clearer
07404c6
- Breaking change: feat(vm): added deserializing module
fd4e9f6
- Breaking change: feat(typechecker): working on typechecker monad
96d3011
- Breaking change: feat(compiler): added fully working extension system
e31807c
- Breaking change: feat(parser): introducing string interpolation
ef0539b
- Breaking change: feat(compiler): added SSA conversion to Plume
fde8b88
- Breaking change: feat(cst): added fancy description of expressions
dbb4ff6
- Breaking change: feat(plume): added list and slice pattern matching
169b0d3
- Breaking change: feat(parser): added return statement
a0d0c09
- Breaking change: feat(parser): added type extension parsing
b761b60
- Breaking change: feat(std): added list module
fd7bc20
- Breaking change: feat(parser): added concrete type parsing functions
0298b5f
- Breaking change: feat(compiler-cc): added free and substitute functions on CC IR
f6ce22d
- Breaking change: feat(parser): updated record type syntax
870ade3
- Breaking change: feat(parser): updated row extension syntax in a more javascriptish way
10a042c
- Breaking change: feat(desugar): added ANF and switch conversion
1cb56cd
- Breaking change: feat(prettyprint): added TLIR prettyprinting
7deddee
- Breaking change: feat(desugar): added desugared syntax
f4de7cd
- Breaking change: feat(tc): added constraint solving for extensions
21f53d3
- Breaking change: feat(syntax): added native function declaration
06a74a2
- Breaking change: feat(std): added basic string module
614332a
- Breaking change: feat(translation): added operator translation
87a6766
- Breaking change: feat(compiler): added bytecode serializing for VM
806e485
- Breaking change: feat(desugar): added desugaring algorithm
c02746a
- Breaking change: feat(type-erasure): introduced dynamic dispatch codebase
ffccd98
- Breaking change: feat(vm): added bytecode module types
288c6bd
- Breaking change: feat(parser): now parsing correctly pattern matching
23b7081
- Breaking change: feat(pretty): added AST prettyprinting
a8a1d3c
- Breaking change: feat(std): added math and prelude modules
da32780
- Breaking change: feat(tc): dissociating generics and qualified types
44a0b0e
- Breaking change: feat(typechecker): added Typed Language Intermediate Representation
902ef35
- Breaking change: feat(parser): added operators description
25afa30
- Breaking change: feat(parser): added literal parsing functions
06bca7a
- Breaking change: feat(translation): added custom error support
42c7c77
- Breaking change: feat(compiler): added bytecode syntax
1dc92dc
- Breaking change: feat(concrete): added module require expression
9dc0c09
- Breaking change: feat(translation): implemented UFCS in translation pass
54fe9da
- Breaking change: feat(cst): added concrete types and their aliases
d5fa36d
- Breaking change: feat(standard): added few standard IO functions
a56acf4
- Breaking change: feat(record): added automatic HasField macro derivation
2f8aab3
- Breaking change: feat(tc): added custom fancy errors
db0652d
- Breaking change: feat(type-erasure): added type erasure algorithm
e31037e
- Breaking change: feat(abstract): added AST type definition
9f72f24
- Breaking change: feat(std): added some number list methods
30ddccd
- Breaking change: feat(compiler-cc): added closure conversion IR definition
7e0bed3
- Breaking change: feat(tc): added type unification
3aadfdc
- Breaking change: feat(std): added get_args function
6008600
- Breaking change: feat(exception): implemented catchIO function
4ab262d
- Breaking change: feat(type-erasure): added type erased syntax
41c52f7
- Breaking change: feat(translation): added native function translation
bf56b50
- Breaking change: feat(translation): added pattern matching translation step
9f51611
- Breaking change: feat(vm): added main VM entry
3df727d
- Breaking change: feat(tc): added HasField instances for Checker state
7daa339
- Breaking change: feat(tc): added search function for checker state
fbfa7db
- Breaking change: feat(tc): added local function
7bb2a79
- Breaking change: feat(parser): added require expression parsing
574fd77
- Breaking change: feat(syntax): updated abstract and translation modules
8b3bdda
- Breaking change: feat(expression): added pattern matching
f0e9d64
- Breaking change: feat(std): added some system functions
1a409bb
- Breaking change: feat(vm): added value definition
29ea7b3
- Breaking change: feat(tc): added generic property verification for extensions
0f521da
- Breaking change: feat(cst): added type annotation datatype
47957cf
- Breaking change: feat(syntax): added generics support for function definition
c9b1c57
- Breaking change: feat(tc): added type conversion function
3697a13
- Breaking change: feat(cst): added CST primitives
926c8d8
- Breaking change: feat(tc): added new specific extension declaration node
1eb2e31
- Breaking change: feat(monad/IO): added IOReader type utility
595892c
- Breaking change: feat(parser): added main Parser module entry
62a61bd
- Breaking change: feat(parser): removed typevar parsing
3d59d29
- Breaking change: feat(tlir): added type extension TLIR node
c8b1851
- Breaking change: feat(tc): added constraint definition
5a1976a
- Breaking change: feat(translation/require): added require translation beginning code
9a139d9
- Breaking change: feat(tc): added constraint solver
9fa6346
- Breaking change: feat(deps): now using relude instead of default prelude
576c685
- Breaking change: feat(record): removed GHC.Records in favor of native one
48b0ccf
- Breaking change: feat(log): added bunch of IO functions
0e37f92
- Breaking change: feat(records): re-added records overlapping due to lack of features
49be57a
- Breaking change: feat(std): added some IO macros
ea39a73
- Breaking change: feat(syntax): added list support
e991c29
- Breaking change: feat(pretty): added some prettyprinting instances
ccdb627
- Breaking change: feat(cst): added main CST module entry
d750cb5
- Breaking change: feat(tc): added some utility functions
47b659a
- Breaking change: feat(tc): added main typechecker runner function
50512e9
- Breaking change: feat(tc): added some state related functions
4f08e96
- Breaking change: feat(constraints): added extension constraint
9b78fc6
- Breaking change: feat(abstract): added AST module entry
1962ed3
- Breaking change: feat(core): improved new GHC Records with setField function
f52b003
- Breaking change: feat(app): calling parsing functions on main example file
d611917
- Breaking change: feat(tc): added type generalization function
c56274c
- Breaking change: feat(std): specialized print and println to string
8427fc1
- Breaking change: feat(tlir): replaced old generics with new powerful generics
fce69d0
- Breaking change: feat(tc): added constraints field to state
9700ebe
- Breaking change: feat(std): added join string list method
356bceb
- Breaking change: feat(conversion): added type conversion on maybe
a59eac0
- Breaking change: feat(IO): added new IORef functions
9c95c4b
- Breaking change: feat(tlir): introduced TypeOf internal expression
de58f8e
- Breaking change: feat(translation): added spreadable mapping function
cbc6bc7
- Breaking change: feat(translation): added Translator type module
5d06781
- Breaking change: feat(std): added str show extension method
ab0b189
- Breaking change: feat(git): introduced VM submodule
6f21bac
- Breaking change: feat(pretty): added Maybe ANSI Pretty instance
0e4ffac
- Breaking change: feat(parser): updated row restriction with new brand syntax
dd3f9a9
- Breaking change: feat(IO): added readerIO runner function
3994ca4
- Breaking change: feat(prettyprint): added prettyprinting for tuples
24c59bd
- Breaking change: feat(literal): added Ord instance for literals
479a4aa
- Breaking change: feat(tlir): added list support
3c6113c
- Breaking change: feat(tc): added empty match error
1b86c54
- Breaking change: feat(tc): introducing compiler error
2a26ba3
- Breaking change: feat(import): updated imports due to library change.
c96e30a
- Breaking change: feat(tlir): added wildcard pattern type
a6c8b69