- Enhancement
- Updated tuple implementation. It's now a class.
- Replaced pattern matching library with custom one
- Added PostOffice. Only thing that current uses it is Agent
- Removed erlang.js. Moved data types to Kernel.SpecialForms
elsenow works for try expressions- for now works with
intofor lists
-
Enhancement
importworks with all options- Added
JSmodule withnew,mutate,importmacros - All Standard libraries are rolled up into one elixir.js file and imported from that
- Added
Keywordmodule with functions,has_key?andget - Added
Agentmodule with functions,start,get,update, andget_and_update - Map keys are now correctly turned into their atom counterparts if atom keys are used
- Modules no longer export a default object
aliasnow translates to a namespace import unlessdefaultoption is given
-
Breaking
Mutable.updatehas been replaced byJS.updatetranspile,transpile_quoted, andtranspile_pathare nowcompile,compile_quoted, andcompile_path
- Enhancements
- Added
envoption forElixirScript.transpileadding macros for compilation - Fixed
caseimplementation to addthisto call - Updated
Kernelmodule to translate some functions to it's JavaScript equivalent - Added
Loggerthat translates Logger functions to console
- Added
- Enhancements
- an implementation for quote. Currently ignores
:locationand:contextoptions - an implementation for unquote and unquote_splicing
- an implementation for quote. Currently ignores
- Enhancements
- Can now support catch blocks in try expressions
- Wrapped try's in function closure to make sure they return a value;
- Added receive
- Updated pattern matching implementation
- Enhancements
- Can now support rescue and after blocks in try expressions
- Enhancements
- Now using the JS code generator from elixir-estree for code generation, improving speed of transpilation
- the parse functions in the ElixirScript module have been renamed to transpile
- Enhancements
- Made the Tuple, Range and BitString data structures more immutable
- Now replacing characters that can't be used in variable and function names in JavaScript with
something that it (i.e.
match?->match__qmark__) - Implemented Integer module
- Atom now translates to an ES6 Symbol
- List now translates to a frozen JS Array
- Added iterators for Range and BitString
- Updated the pattern match binding to use ES6 destructuring for lists and tuples
- Inner modules are now split out into their own files
- Standard lib is now exported with file output from cli
- Standard lib modules are now automatically imported
- No longer have to define modules via aliases ahead of time. They will be automatically be resolved and made into JavaScript import statements
- Enhancements
- For statements now work with pattern matching tuples
- Improved function chaining
- added
fromclause toimport,alias, andrequireso that the import path can be overridden aliasnow acts likerequirein that it is translated into an import default statement- modules now export a default object with def functions added as properties on it.
- for function closures, now calling by using
.call(this)so thatthisis available inside of it
- Enhancements
- bitstrings
- Better Pattern Matching (Does not support bitstrings yet)
- Capture Operator
- Fixed multi arity implementation
- Updated variable implementation to match Elixir's (i.e. Reusing the same variable name creates a new one in the background)
- Throwing ParseError for SpecialForms currently not supported
- Added more functions from the list standard library
- Enhancements
- function and case guards
- function and case pattern matching
- Can now use ^ on a variable during assignment
- Enhancements
- Renamed project to ElixirScript
- Reduced escript file size
- Enhancements
- Pipe operator
- String interpolation
- Adding more functions to the Kernel module
- Now checking to see if a function is a Kernel function and prepending Kernel to it
- Now turning Atoms into an Atom javascript object instead of a Symbol
- Now turning tuples into a Tuple javascript object
- Fully implemented Tuple module
- Fully implemented Atom module
- Fully implemented Range module
- Can now call properties and zero parameter functions correctly
- case, cond, and if are now turned into if statements wrapped in function closures
- Anonymous functions are now turned into anonymous functions in javascript insteed of arrow functions
- Enhancements
-
From standard library implemented:
- Enum.map
- Kernel.tl
- Kernel.hd
- Logger
-
Implemented language features:
- All primatives except bitstrings
- defmodule
- import, alias, and require
- case, cond, if
- def, defp
- defstruct, defexception
- raise
- multiple arity functions
- basic binary operations
- for without into
-
Missing features:
- bitstrings
- pattern matching
- macros
- actors
- try
- regular expressions
- string interpolation
- Most of standard library
-