Newest to oldest additions in each section.
- destructure/pattern match in
let
bindings, j14159 alpaca_printer
, type formatting and printing for compiler feedback, lepoetemaudit- build for OTP 20, getong
- logical operators (and, or, xor), Licenser
- explicit type signatures for top-level bindings, e.g.
val add: fn int int -> int
, lepoetemaudit - nicely formatted and humane compiler output with colours, Licenser
- local/inner functions can be curried, lepoetemaudit
- able to specify default types and functions to be imported in a project, lepoetemaudit
- infix functions starting with
<
are now right-associative, lepoetemaudit - generate a module’s dependencies from source to support partial compilation, lepoetemaudit
- support loading of pre-compiled
BEAM
files rather than requiring every module in source form, lepoetemaudit - quoted atoms, lepoetemaudit
- German error message translation, ypaq
- Spanish error message translation, arpunk and yurrriq
- symbol, integer, and float AST nodes defined in Alpaca itself, j14159
- enable internationalization and formatting of error messages, danabr
- wildcard variables (the `_` variable) in function head matches are now renamed properly, j14159
- partial record matching works, no more cycles in reference cells, j14159
- type inferencer reference cells in ETS, no more processes, j14159
- unsized binaries work correctly when constructing binaries, lepoetemaudit
- simple expressions don’t require parens, e.g.
[1 + 2, 3 + 4]
, lepoetemaudit - lambdas inside match expressions now work correctly, lepoetemaudit
- don’t re-type modules for every module-qualified function call, lepoetemaudit
- correctly rewrite the internals of unbound lambdas, j14159
- don’t perform exhaustiveness checks on already-compiled modules, lepoetemaudit
- fix unification failure for nested ADTs, j14159
fn
as a reserved word in tests, Licenser- purge warnings removed for cleaner test output, Licenser
- substantial test and warnings cleanup, Licenser
- fixed variable lookup failure in exhaustiveness checks, j14159
- broken BIF fixes (
!=
,/
), lepoetemaudit - fix lambdas in records, j14159
- properly escape
\
sequences in strings, lepoetemaudit - usage example correction, monkeygroover
- rewrite imported functions in tests, j14159
- rewrite lambdas in tests, j14159
- allow forward references to top-level bindings, j14159
- parameterized
pid
type fix when usingis_pid
, j14159
- parser and AST generation errors report in a uniform manner and are specified, https://github.com/danabr
- lambdas (anonymous functions), https://github.com/j14159
- function type specs have same syntax as lambdas, https://github.com/danabr
- generation
test/0
for EUnit, https://github.com/j14159
- correct arity for curried versions of functions, https://github.com/lepoetemaudit
- built-in types are no longer reserved words, https://github.com/danabr
- type arity errors unified, https://github.com/danabr
- bad variables in errors (throw, error, exit) are errors, https://github.com/j14159
- all parser and AST generation errors include line numbers, https://github.com/danabr
- line numbers for module definitions, https://github.com/danabr
- line numbers for unexported functions, https://github.com/danabr
- all clauses can lead with a
|
, https://github.com/j14159
- top-level
let
deprecates all significant whitespace, https://github.com/lepoetemaudit - same function name allowed for different arity, https://github.com/j14159
- Alpaca’s compiled modules prefixed with
alpaca_
, https://github.com/lepoetemaudit - zero-arity functions constrained to literals for use as values, https://github.com/lepoetemaudit
- property-based testing with PropEr, generates full modules for testing, https://github.com/ypaq
- import functions from other modules, https://github.com/j14159
- exhaustiveness checking for top-level functions, https://github.com/danabr
- functions as ADT members, https://github.com/danabr
- automatic currying of top-level functions, https://github.com/lepoetemaudit
- type aliases for arrow types, https://github.com/danabr
- record transformations, https://github.com/j14159
- apply arguments to an expression that evaluates to a function, https://github.com/j14159
- many whitespace fixes, https://github.com/lepoetemaudit and https://github.com/ypaq
- unused code and warnings cleanup, https://github.com/jkakar
- FFI calls must refer to missing variables, https://github.com/danabr
- unit value code generation, https://github.com/danabr
- reduced number of reserved words, https://github.com/danabr
- module-qualified constructors and types default to private, https://github.com/j14159
- more obvious typing of higher order types, https://github.com/danabr
- unified internal types for lists and maps, https://github.com/danabr
- referring to nonexistent types and type variables are errors, https://github.com/j14159
- unified error handling in AST generation, https://github.com/danabr
- early infix function support (operators, e.g.
|>
) from https://github.com/lepoetemaudit - multiple instances of
_
permitted in patterns throw/1
,exit1/
, anderror/1
are now available- patterns in function arguments, e.g.
g f Some x = Some (f x)
orget_x {x=x} = x
- types default to private in their defining module with explicit export and import in others
- minor type inferencer fixes for records and tuples
- fixes for type aliases and unions involving them: https://github.com/danabr
- early record support with row polymorphism
- fixes for unification of the value type portion of maps
- comment syntax fixes: https://github.com/danabr
- formatting and cleanup: https://github.com/tuncer
- polymorphic ADT unification fix: https://github.com/danabr
- renamed
call_erlang
tobeam
for clarity: https://github.com/tuncer - built-in parametric types (e.g. list, map) can be parameterized by ADTs: https://github.com/danabr
- fix for polymorphic process spawning: https://github.com/j14159
- Haskell-style comments, from https://github.com/tuncer
- nested comments are errors, from https://github.com/yurrriq
- file renaming (cleanup) from https://github.com/tuncer (scanner -> mlfe_scanner)
- new compiler entry points from https://github.com/tuncer
- unary minus fix (parser corrections) from https://github.com/danabr. Makes
symbol-1
work assymbol - 1
does.
- dialyzer and xref fixes, Travis CI integration, courtesy of https://github.com/NobbZ
- module_info synthesized by the compiler, courtesy of https://github.com/erszcz
- typos and clarifications from https://github.com/tjweir, https://github.com/saem, https://github.com/ypaq, https://github.com/omarkj, https://github.com/yurrriq
- binaries, thanks to https://github.com/yurrriq and https://github.com/talentdeficit for feedback and ideas
- basic map support
- change to `spawn` syntax, it now takes a (syntactic) function application instead of function and arg list, thanks to https://github.com/ypaq for feedback
- a “language tour” document, thanks to https://github.com/ypaq and https://github.com/saem for initial feedback and corrections
- a simple unit test form/hook for creating basic EUnit-compatible tests
- UTF-8 strings, compiled as binaries
- character lists for Erlang string support
- lots of little type inferencer/checker fixes