All Versions
Latest Version
Avg Release Cycle
33 days
Latest Release
742 days ago

Changelog History
Page 1

  • v0.32.1

    March 17, 2018

    🛠 Fixed

    • Global JavaScript modules not compiling correctly
  • v0.32.0

    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 './'
      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

    September 28, 2017

    🛠 Fixed

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

    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

    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

    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);

    🔄 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

    February 28, 2017

    [0.26.1] - 2017-02-27

    🛠 Fixed

    • 🛠 Fixed for translation
    • 📚 Updated documentation
  • v0.26.0

    February 27, 2017

    [0.26.0] - 2017-02-27

    ➕ Added

    Multiple when clauses in guards


    🔧 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

    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