Releases: LuxLang/lux
Releases · LuxLang/lux
0.9.0
Added
- Array literals for JVM FFI.
- Can now use nested directories as compilation targets.
- Support for literal syntax for various numeric units.
Canabstraction for coupling implementations and values.- Automatic definition of
<,<=,>,>=where there is anOrder. - Special optimizations for pattern matching on
I64,Decimal, andText. - Size limits for
ArrayandBinary. - Exponentiation for multiple numbers and primality testing.
- Support for radian and turn
Decimalliterals. Streameffect.Filtereffect.- Reducer and transducer as alternatives to
StreamandFilter. Property(lens),View(iso),Case(prism), andMember(traversal) optics.- Optional octal, decimal, and hexadecimal notation for natural numbers.
- Optional binary notation for natural numbers.
- Big/unbounded natural, fraction, integer, and rational numbers.
- Convenient way to pattern-match against cases/prisms.
Sliceabstraction forList.Sliceabstraction forText.- Standard errors and better definition of errors.
- Support for general-purpose theorem-proving.
- Support for the Base64 format.
Changed
- Got rid of
condby allowing for multi-clauseif. - The
to_doandfix_memacros now log a warning at compile-time. - Made the denominator in
RationalaNaturalnumber. - Re-named the
requiremacro tousing. - Re-named the fields for runtime data-structures for all back-ends.
- Re-named the
ofmacro toby. - Re-named
maxtomajor,mintominor,toptomaximum,bottomtominimum. - Re-named
SymboltoName. Re-namedshorttoproper. - Better syntax for text composition.
- Better types for
failurefunctions. - Re-named
ListtoStack. - New implementation of
Listbased on arrays. - Better type coercions.
- Better handling of variance for
Arraytype. - Better syntax for bits.
- Better way of defining template macros.
- New implementation of variadic functions.
- Labels now start with
:by convention, rather than#. - Aedifex can now handle AAR dependencies.
- Aedifex can now use local Android JAR.
- Aedifex can now generate Android APKs.
Removed
- Scheme back-end.
world/time/seriesmachinery.Applyabstraction.- Support for saturation arithmetic.
Fixed
Cannot find artifact data.bug in scripting compilers.- TAR compression when deploying with Aedifex.
- Bug compiling JVM classes where interim artifacts were not packaged.
Deprecated
Security
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.luxfile. - 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.
@preand@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
RatioandComplexnumbers. - 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.