Skip to content

Releases: HallofFamer/CLox

CLox v1.9.0

29 Jul 16:05
Compare
Choose a tag to compare

CLox version 1.9.0, it introduces the following new features on the last version 1.8.0:

  • Generator functions/methods which can yield control back to the caller and resume at a later point of execution.
  • Add class Promise to the standard library(clox.std.util), which uses libuv to handle async tasks that completes in future.
  • Introduction of async and await keywords, which allows C#/JS style of concurrency.
  • Refactoring package clox.std.io and clox.std.net to use async non-blocking calls.

CLox v1.8.0

08 Feb 13:58
Compare
Choose a tag to compare

CLox version 1.8.0, it introduces the following new features on the last version 1.7.0:

  • Operator overloading to allow operators to be treated as method calls, thus can be used by user defined classes.
  • Improved string concatenation, addition of string interpolation and UTF-8 strings.
  • Interceptor methods which are invoked automatically when getting/setting properties, invoking methods or throwing exceptions.
  • Object ID and generic object map which enable inheritance for special build-in classes such as String and Array.

CLox v1.7.0

17 Nov 16:06
Compare
Choose a tag to compare

CLox version 1.7.0, it introduces the following new features on the last version 1.6.0:

  • Raise exception with throw keyword, and exception handling with try/catch/finally statement.
  • Improved CLox standard library with addition of class Exception and various exception subclasses.
  • Addition of nil handling operators: Optional chaining operator(?.), Nil coalescing operator(??), and Elvis operator(?:).
  • Inline caching for VM optimization, as well as implementation of Shape(Hidden Class) for better instance variable representation.

CLox v1.6.0

31 Aug 14:18
Compare
Choose a tag to compare

CLox version 1.6.0, it introduces the following new features on the last version 1.5.0:

  • Namespace as CLox's module system, allowing importing namespace and aliasing of imported classes, traits and functions.
  • Refactor the existing standard library with namespaces(in clox.std parent package), add new package clox.std.network.
  • Fix reentrancy problem with CLox, calling Lox closures from within C API becomes possible.
  • Cross-platform build with Cmake, as well as package manager with vcpkg(windows only).

CLox v1.5.0

06 Jun 10:02
Compare
Choose a tag to compare

CLox version 1.5.0, it introduces the following new features on the last version 1.4.0:

  • Refined object model which is similar to Smalltalk's metaclass system.
  • Class methods in class declaration, and trait keyword for trait declaration.
  • Allow loading lox source files in lox script and another lox source file with require keyword.
  • Anonymous classes/traits similar to anonymous functions/lambda.

CLox v1.4.0

20 Apr 12:36
Compare
Choose a tag to compare

CLox version 1.4.0, it introduces the following new features on the last version 1.3.0:

  • Immutable variable declaration with val keyword.
  • Function/Method parameters become immutable by default, but may be mutable with var keyword.
  • Built-in and user defined classes/functions become be immutable, and cannot be accidentally overwritten.
  • New class Range in package collection, as well as range operator(..) for range literals.

CLox v1.3.0

15 Jan 16:14
Compare
Choose a tag to compare

CLox version 1.3.0, it introduces the following new features on the last version 1.2.0:

  • Array/Dictionary Literals and square bracket(subscript) notation for array/dictionary access.
  • Variadic Functions, Anonymous Functions(local return) and Lambda Expressions(nonlocal return).
  • Replace C style for loop by Kotlin style for-in loop for collection types.
  • Clox Standard Library improvement: New package collection and io.

CLox v1.2.0

01 Aug 20:25
Compare
Choose a tag to compare

CLox version 1.2.0, it introduces the following new features on the last version 1.1.0:

  • Improved object model - Everything is an object, and every object has a class, including nil, true, false, number, string, function, class etc.
  • CLox Standard Library for package lang and util, which contains classes such as Boolean, Number, String, List, Dictionary, DateTime, etc.
  • Allow customized runtime configurations for CLox at startup with clox.ini
  • Split the Number class into Int and Float classes, which will distinguish between integers and floating numbers.

CLox v1.1.0

08 Jul 07:11
Compare
Choose a tag to compare

CLox version 1.1.0, it introduces the following new features on the original version 1.0.0:

  • VM is no longer a global variable, allowing CLox VM to be embedded in other host applications.
  • Full fledged Framework for writing Native functions, methods and classes.
  • Root class Object which serves as superclass of every class.
  • Remove print statement and replace it by print/println native functions.

CLox v1.0.0

22 Jun 05:38
663507b
Compare
Choose a tag to compare

The Original CLox version 1.0.0, it basically matches the implementation of CLox from the book Crafting Interpreter. More features and internal changes of the VM will be conducted in subsequent releases.