Skip to content

Releases: LuxLang/lux

0.8.0

13 Sep 07:16
Compare
Choose a tag to compare

Added

  • Logic programming.
  • Dynamic delimited continuation operators.
  • Conditions system.
  • Object-oriented programming.
  • Dynamic-binding and subject-oriented programming.
  • Simple benchmarking machinery.
  • Saturation arithmetic.
  • Generic logging abstraction/machinery.
  • Inline testing.
  • Aspect-oriented programming.
  • Context-oriented programming.
  • Row polymorphism.
  • Predicate-based polymorphism.
  • Behavioral programming.
  • Type-based multiple dispatch.
  • Structured concurrency.
  • Function trampolines.
  • Agent model.
  • Support for time-zones.
  • Incremental computation.
  • Functions with named parameters.
  • Communicating Sequential Processes (CSP).
  • Variadic functions.
  • Event-loop concurrency.

Changed

  • Simplified polytypic programming.
  • Re-licensed to MPL 2.0.
  • Added source-tracking annotations when compiling for the JVM.
  • Now doing implicit definition aliasing, instead of requiring explicit aliasing.
  • New syntax for compiler extensions.
  • Made labels (tags & slots) into normal definitions.
  • Made the compiler's caching system sensitive to the build configuration.

Removed

  • Leiningen plugin.
  • Bootstrapping compiler.
  • Custom licensing machinery.

Fixed

Deprecated

Security

0.7.0

15 Aug 01:04
Compare
Choose a tag to compare

Added

  • Inlined functions.
  • Can pass configuration parameters from the build description to the compiler.
  • Code selection based on configuration parameters.
  • Code selection based on compiler version.
  • (Experimental) extensible meta-compiler architecture.
  • Export machinery to consume Lux code from host-language programs.
  • Generalized/type-agnostic arithmetic.
  • (Optional) faster (but unsafe) array-handling machinery.
  • (Optional) faster (but unsafe) text-handling machinery.
  • (Optional) faster (but unsafe) binary-handling machinery.
  • Can now deploy releases with Aedifex.
  • Extensible import syntax.
  • Context-aware macros.
  • Macro volabularies for more controlled macro-expansion.

Changed

  • JVM compilation no longer relies on the ASM library.
  • Friendlier syntax.
  • No more automatic conversions of primitive types in JVM FFI.
  • Now demanding mandatory loop names, instead of using default "again" name.
  • Now taking into account both contravariance and covariance for mutable types in the standard library.
  • Improved syntax for JVM interop.
  • Programs are now explicit and first-class and the "main" program must be specified in an Aedifex project.lux file.
  • Macros are first-class values.
  • Pattern-matching now supports matching against globally-defined constants.
  • All (normal) macros in a pattern are now automatically expanded.

Removed

Fixed

  • Pattern-matching bug that allowed redundancies for primitives.
  • Various bugs related to compiler extensions.
  • Various JVM interop bugs.

Deprecated

Security

0.6.5

01 Dec 03:53
Compare
Choose a tag to compare
  • Ruby compilation that is compatible with MRuby.
  • Tree-shaking for all compilers.
  • Fixed compilation issue for Lua.

0.6.4

03 Nov 03:29
Compare
Choose a tag to compare
  • FIXED A bug when using extensions from imported modules.
  • FIXED Proper data communication between Ruby compiler and directive extensions.
  • FIXED Proper inheritance of the default profile in Aedifex.

0.6.3

23 Oct 03:59
Compare
Choose a tag to compare
  • Fixed bug that resets analysis extensions.
  • Fixed dependency issue that prevented release of Lua compiler.

0.6.2

09 Oct 08:19
Compare
Choose a tag to compare

Fixed a packaging issue that led to bad executable JARs.

0.6.0

01 Oct 07:22
Compare
Choose a tag to compare
  • Pure-Lux compiler implementation.
  • JavaScript compiler.
  • Python compiler.
  • Lua compiler.
  • Ruby compiler.
  • User-defined language/compiler extensions.
  • Build tool for Lux (Aedifex).
  • Support for refinement & quotient typing.
  • Support for continuous & fuzzy logic.
  • Support for modular arithmetic.
  • Support for function mixins.
  • Support for function memoization.
  • Support for mutually-recursive function.
  • Support for region-based resource management.
  • Support for capability-based security.
  • Support for information-flow security.
  • Support for semaphore-based concurrency.
  • Too many bug fixes and minor improvements to count.

0.5.0

08 Jan 18:23
Compare
Choose a tag to compare
  • Exception-handling in pure Lux [lux/data/error/exception].
  • More immutable data-structures (i.e. stack, tree, zipper).
  • Design-by-contract macros (i.e. @pre and @post).
  • PRNG [lux/random].
  • Property-based testing support in lux/test.
  • Language support for Natural numbers (unsigned integers).
  • Language support for Fractional numbers between [0,1).
  • Library support for Ratio and Complex numbers.
  • Underscore (_) can be used as digit separator for numbers (e.g. 123_456.00).
  • Modules can now have annotations.
  • Automatic structure selection for type-class style polymorphism [lux/type/auto].
  • New tools for debugging macros [lux/macro].
  • Easy polymorphic math operations [lux/math/simple].
  • Monad transformers.
  • Atomic references [lux/concurrency/atom].
  • Android support.
  • Monadic lexers [lux/lexer].
  • Regular expressions [lux/regex].
  • JSON serialization [lux/data/format/json].
  • Algebraic effects [lux/control/effect].
  • Parallel compilation.
  • Auto-building and auto-testing when files change.
  • Improved error messages.
  • Improved documentation.
  • Improved the naming convention of functions, macros and structures to make them easier to read and understand.
  • Various bug fixes and optimizations.

0.4.0

10 Aug 02:19
Compare
Choose a tag to compare
  • Better error messages with added cursor information.
  • Optimized function compilation and application.
  • Tail-recursion optimization.
  • Added a unified mechanism for doing host-interop.
  • Primitive arrays are now treated as distinct types from the general Array type.
  • Program definition is now a feature of Lux itself, instead of the host platform.
  • Decision trees for pattern-matching optimization.
  • Various bug fixes and refactoring.

0.3.3

26 Apr 04:16
Compare
Choose a tag to compare
  • Tons of improvements to JVM inter-op.
  • Identifiers now support unicode characters.
  • REPL-mode.
  • Type-inference when doing pattern-matching.
  • Several bug-fixes.