- Added HISTORY.md file.
- Scoped structs can be declared with the
for (...)
clause after the struct. A value of a scope struct can only bemake
d, and the fields of such a value can only be accessed, lexically inside one of the definitions named in thefor
. - 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.
- 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.
- Re-focused project: Castile is a simple imperative language with union types.
- Released under a 3-clause BSD license.
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.
- Completed the C-generating backend of the compiler: it passes all tests now.
- Implemented
str
builtin, equality testing ofstruct
s in all backends. - Improved pretty-printing of code in C and Ruby backends.
- Implemented
ne
in stackmac implementation.
- Updated implementation to run under both Python 2 and Python 3.
- Refactored test suite, making it more idiomatic Falderal.
- Fixed generated Ruby code that worked in Ruby 1.8 but fails in Ruby 1.9.
- Stopped using deprecated Falderal variable names in test suite.
- Treatment of local variables became more Python-like.
- Beginnings of a C backend in compiler.
- Heavy development of the language, with many changes.
- Added JavaScript, Ruby, and stackmac (stack-machine) backends to compiler.
Initial release of Castile, an unremarkable language with an unremarkable compiler/interpreter in Python.