git @ Cat's Eye Technologies Castile / master HISTORY.md
master

Tree @master (Download .tar.gz)

HISTORY.md @masterview rendered · raw · history · blame

History of Castile
==================

Castile 0.5
-----------

### Distribution

*   Added HISTORY.md file.

### Language

*   Scoped structs can be declared with the `for (...)` clause
    after the struct.  A value of a scope struct can only be
    `make`d, and the fields of such a value can only be accessed,
    lexically inside one of the definitions named in the `for`.
*   Structs cannot be tested for equality with the `==` and `!=`
    operators.  Instead the programmer should write a function
    that compares structs for equality, if desired.
*   Values of union type can be tested for equality, but only if
    none of the types involved in the union are structs.

### Implementation

*   Lexical scanner has been split off from parser code, into
    its own module.  A performance bug (using O(n^2) space
    instead of O(n)) during scanning has also been fixed.
*   Line numbers are recorded in the AST when parsing, and
    reported on type errors when type errors occur.
*   Requesting the AST be dumped, will also dump the AST with
    type assignments, if an error occurs during type checking.
*   Established an abstract base class for compiler backends.
*   Fixed a bug where tagged values were being tagged again
    during a cast from a union type to another union type.
*   ArgumentParser is used instead of OptionParser to parse
    command-line arguments. `--version` added, `--test` (and
    remaining doctests in source modules) removed.

Castile 0.4
-----------

### Distribution

*   Re-focused project: Castile is a simple imperative language
    with union types.
*   Released under a 3-clause BSD license.

### Language

*   `struct`s cannot be compared for order, it is a static error.
*   A union type is allowed to be promoted to a bigger union type,
    or to itself.

### Implementation

*   Completed the C-generating backend of the compiler: it passes all tests now.
*   Implemented `str` builtin, equality testing of `struct`s in all backends.
*   Improved pretty-printing of code in C and Ruby backends.
*   Implemented `ne` in stackmac implementation.

Castile 0.3 revision 2021.0625
------------------------------

*   Updated implementation to run under both Python 2 and Python 3.
*   Refactored test suite, making it more idiomatic Falderal.

Castile 0.3 revision 2016.0331
------------------------------

*   Fixed generated Ruby code that worked in Ruby 1.8 but fails in Ruby 1.9.

Castile 0.3 revision 2015.0101
------------------------------

*   Stopped using deprecated Falderal variable names in test suite.

Castile 0.3
-----------

*   Treatment of local variables became more Python-like.
*   Beginnings of a C backend in compiler.

Castile 0.2
-----------

*   Heavy development of the language, with many changes.
*   Added JavaScript, Ruby, and stackmac (stack-machine) backends to compiler.

Castile 0.1
-----------

Initial release of Castile, an unremarkable language with an unremarkable
compiler/interpreter in Python.