efene 0.7 Release Notes

About efene

efene is a programming language that runs on the erlang virtual machine.

The idea is to provide an alternative syntax to erlang that is most suitable for people coming from languages like Java, C, C++, C#, Javascript.

The language is almost 100% compatible with erlang (and will be), the compiler allows to translate an efene source file into a readable erlang one or compile it directly to bytecode. It also adds some syntactic sugar in some places to make some tasks easier.

New Language Syntax

  • The If Expression now allows calling functions in the boolean expression, the if expression that behaves exactly like erlang is now called When Expression.
  • For Expression syntax added, another way of writing list comprehensions that looks similar to for/in in some languages.
  • Integer division operator // as in python 3 added, the operator in erlang is div
  • Macro Variables: $module, $module_string, $line and $file replaced during compilation
  • Scientific Notation for Floats

Language Syntax Changes

  • The If Expression now allows calling functions in the boolean expression, the if expression that behaves exactly like erlang is now called When Expression.

    No code should be changed since the new if expression is a superset of the old one.

Internal Changes

  • Simplified parser
  • Object now throws the exception {method_not_found, Arg1, Arg2} when no function clause matches.

New Modules or Functions

  • obj.copy function added to the obj module.

  • validate.or_ allows to validate a field if one of the two validators returns true:

    >>> F = validate.or_(validate.string(), validate.binary())
    >>> F(4)
    false
    >>> F("asd")
    true
    >>> F(<["asd"]>)
    true
    

Others

  • Improvements in the pygments syntax highlighter

Documentation

Documentation

Some clarifications in the documentation based on feedback, new features documented.

Tutorial

New sections in part 2.

Table Of Contents

Previous topic

efene 0.8 Release Notes

Next topic

efene 0.6 Release Notes

blog comments powered by Disqus