Releases: LuxLang/lux
Releases · LuxLang/lux
0.8.0
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
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
- Ruby compilation that is compatible with MRuby.
- Tree-shaking for all compilers.
- Fixed compilation issue for Lua.
0.6.4
- 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
- Fixed bug that resets analysis extensions.
- Fixed dependency issue that prevented release of Lua compiler.
0.6.2
Fixed a packaging issue that led to bad executable JARs.
0.6.0
- 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
- 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
Nat
ural numbers (unsigned integers). - Language support for
Frac
tional numbers between [0,1). - Library support for
Ratio
andComplex
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
- 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.