counterpoint

A robust programming language.

AGPL-3.0 License

Stars
2
counterpoint - v0.4.0 Latest Release

Published by chharvey 5 months ago

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

Non-Breaking Changes

External

  • better error-reporting (multiple errors, better messages, etc.)

Internal

Project Stuff

  • upgrade to npm 7
  • upgrade to ES Modules
  • development tasks no longer depend on gulp
  • dev toggles no longer version-based

Specifics

  • ASTNode constructors no longer take arrays for enumerated properties
  • remove unused build methods from some ASTNode classes
counterpoint -

Published by chharvey over 3 years ago

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
counterpoint -

Published by chharvey about 4 years ago

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
counterpoint -

Published by chharvey about 4 years ago

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)