All Versions
42
Latest Version
Avg Release Cycle
33 days
Latest Release
2495 days ago

Changelog History
Page 1

  • v0.32.1 Changes

    March 17, 2018

    ๐Ÿ›  Fixed

    • Global JavaScript modules not compiling correctly
  • v0.32.0 Changes

    February 10, 2018

    โž• Added

    • ElixirScript.Test for testing ElixirScript modules in JavaScript. ElixirScript.Test is for unit testing modules that interact with JavaScript in some way. For modules that are can be used in both Elixir and ElixirScript, ExUnit is still preferred. Tests that use ElixirScript.Test must be placed in a test_elixir_script folder in the root of your project. These tests are run using node.js. The API for ElixirScript.Test is meant to be as close to ExUnit as possible.

    ๐Ÿ”„ Changed

    • ElixirScript now requires Elixir 1.6. This is so that ElixirScript can use the new Mix.Task.Compiler behaviour.
    • mix clean will now correctly clean up ElixirScript output.
    • Compiler will now output a JavaScript file per Elixir module.
    • Modules with a start function must be started directly.
      # Before ElixirScript 0.32.0:
      import Elixir from './elixirscript.build.js'
      Elixir.start(Elixir.Main, [1, 2, 3])
    
      # ElixirScript 0.32.0 and later:
      import Main from './Elixir.Main.js'
      Main.start(Symbol.for('normal'), [1, 2, 3])
    
  • v0.31.1 Changes

    September 28, 2017

    ๐Ÿ›  Fixed

    • Compiler error when receive is used as variable name
  • v0.30.0 Changes

    August 15, 2017

    โž• Added

    • ๐Ÿ“š ElixirScript now has a Foreign Function Interface (FFI) for interoperability with JavaScript. For more details, see documentation at ElixirScript.FFI
    • ElixirScript.JS.mutate/3
    • ElixirScript.JS.map_to_object/1
    • 0๏ธโƒฃ root option for specifying the root import path for FFI JavaScript modules. Defaults to "."

    ๐Ÿ”„ Changed

    • Compiler has been completely rewritten. ElixirScript now requires Erlang 20+ and Elixir 1.5+
    • JS module renamed to ElixirScript.JS
    • ๐Ÿ— Default output path is now priv/elixir_script/build

    โœ‚ Removed

    • ๐Ÿ‘Œ Support for CommonJS and UMD output formats has been removed. Output will be in ES module format
    • ๐Ÿšš The js_modules option has been removed in favor of the new FFI
    • ๐Ÿšš ElixirScript.Watcher has been removed
  • v0.28.0 Changes

    June 11, 2017

    โž• Added

    • ๐Ÿšš remove-unused option that will remove all unused modules from output
    • reimplemented structs to avoid creating JavaScript classes
  • v0.27.0 Changes

    March 18, 2017

    โž• Added

    • super
    • defoverridable
    • IO.inspect\1, IO.puts\1, IO.puts\2, IO.warn\1
    • Elixir.load for loading generated JavaScript modules in bundled output. Unlike Elixir.start, this will only call __load on the module and return the functions on it
    const exports = Elixir.load(Elixir.MyApp);
    exports.hello();
    

    ๐Ÿ”„ Changed

    • -ex alias is now -e
    • A filename can be specified for output
    • To access global JavaScript functions, modules, and properties, use the JS module
    JS.length # translates to 'length'
    JS.alert() # translates to 'alert()'
    JS.String.raw("hi") # translate to String.raw('hi')
    JS.console.log("hi") # translates to console.log('hi')
    

    ๐Ÿ›  Fixed

    • ๐Ÿ‘‰ Make sure mix compiler works in umbrella apps
  • v0.26.1 Changes

    February 28, 2017

    [0.26.1] - 2017-02-27

    ๐Ÿ›  Fixed

    • ๐Ÿ›  Fixed for translation
    • ๐Ÿ“š Updated documentation
  • v0.26.0 Changes

    February 27, 2017

    [0.26.0] - 2017-02-27

    โž• Added

    Multiple when clauses in guards

    Kernel.defdelegate/2

    ๐Ÿ”ง js_modules configuration option has been added. This is a keyword list of JavaScript modules that will be used.

          js_modules: [
            {React, "react"},
            {ReactDOM, "react-dom"}
          ]
    

    js-module flag has been added to the CLI in order to pass js modules.

    elixirscript "app/elixirscript" -o dist --js-module React:react --js-module ReactDOM:react-dom
    

    โœ‚ Removed

    • @on_js_load has been removed in favor of having a start/2 function defined. More info below
    • ๐Ÿ”ง JS.import has been removed in favor of defining JavaScript modules used in configuration

    ๐Ÿ”„ Changed

    Now bundles all output, including the boostrap code.
    The exported object has Elixir modules in JavaScript namespaces that are lazily loaded when called.

    To start your application import the bundle according to whichever module format was selected and
    then call start giving it the module and the initial args

    //ES module exampleimport Elixir from './Elixir.App'Elixir.start(Elixir.App, [])
    

    The start function will look for a start/2 function there.
    This is analogous to a Application module callback

  • v0.25.0 Changes

    February 19, 2017

    [0.25.0] - 2017-02-19

    โž• Added

    • ๐Ÿ‘ Updated elixir_script mix compiler to support compiling elixir_script paths in dependencies if dependency has mix compiler defined as well
    • โž• Add Collectable protocol implementations
    • โšก๏ธ Updated for implementation to use Collectable
    • format option. Can now specify the module format of output.
      Choices are:
      0๏ธโƒฃ * :es (default) for ES Modules
      * :umd for UMD
      * :common for CommonJS
    • 0๏ธโƒฃ Default input, output and format for elixirscript mix compiler. In a mix project by default the elixirscript compiler will look in lib/elixirscript and input and place output in priv/elixirscript. The default format is :es

    โœ‚ Removed

    • receive
    • Process module

    ๐Ÿ›  Fixed

    • JS module functions not translated properly when imported
    • โšก๏ธ Update fs dependency to 2.12
    • Incorrect handling of function heads with guards