Skip to content

Releases: chharvey/counterpoint

v0.3.0

11 Apr 04:30
Compare
Choose a tag to compare

In addition to the features mentioned in Milestone v0.3.0, this release contains the following changes:

Non-Breaking Changes

External

  • add GitHub Issue templates

Internal

  • refactor source files

v0.2.0

10 Sep 06:51
Compare
Choose a tag to compare

In addition to the features mentioned in Milestone v0.2.0, this release contains the following changes:

Non-Breaking Changes

External

  • Add compiler feature toggles to enable programming language features. The end user (programmer) has control over these.
    • languageFeatures
      • comments
      • integerRadices
      • numericSeparators
    • compilerOptions
      • constantFolding
      • intCoercion
  • add type-checking and improve constant-folding of expressions
  • improve int coercion for arithmetic operations when constant-folding is turned off
  • optimize exponentiation operation: a ^ b is faster when a is 0 or 1
  • improve documentation & error reporting

Internal

  • Add development flags to internal functionality and tests. Based only on package.json version number. Flags for a version should be removed & fully enabled before that version is released.
  • replace Jest testing suite with Mocha
  • abstract out cli scripting functionality into a CLI class
  • reorganize code structures to match specification: from smallest/simplest to largest/most complex
  • more structured code builder (mechanism that produces assembly code)

v0.1.0

10 Sep 07:02
Compare
Choose a tag to compare

Introducing the Solid Programming Language

(name to be finalized)

Version 0.1.0 is the first pre-release version! Expect each v0.X.0 version to incrementally introduce new features, until v1.0.0, a complete programming language.

  • a simple calculator
  • integer operands represented in 16-bit two’s complement
  • arithmetic operators
    • addition +
    • subtraction -
    • multiplication *
    • division /
    • exponentiation ^
    • grouping ( )
  • infix notation syntax, e.g. 2 * (3 + 4), not (* 2 (+ 3 4)) or *(2, +(3, 4))
  • compiled output is WASM format
  • compiled and run via a small command-line interface