Quick links
Release 0.4.2 (2006-02-28)
- Argument count mismatches are now detected (by Parrot) and an exception is thrown
- The argument-count-mismatch test case is now activated
- Fixed some argument count mismatches in the kernel library
- Unfortunately, two of the examples are broken (regexp issues some warnings, and amber-square raises an exception). I'm not sure yet if these bugs are on the Amber side or Parrot side.
- Estimated progress towards release 1.0: language constructs 47%, libraries 6%, documentation 4%, robustness 6%
Release 0.4.0 (2005-12-20)
- The "old" keyword is implemented
- Unary plus & minus now have higher precedence than dot-calls in a Call_chain
- New test to check operator precedence
- Minor change to code generation for manifest integer constants
- Square-bracket indexing of Hash and Array implemented for single dimensions
- New test for copying/reference semantics and aliasing
- Implemented outer lexicals for AGENTs (read-only)
- New test for outer variables
- Added Ackermann benchmark to examples/shootout
- Inspect_instruction now accepts multiple Expressions in When_part
- New test for the Inspect_instruction
- Various bug fixes and tweaks
- Estimated progress towards release 1.0: language constructs 46%, libraries 6%, documentation 4%, robustness 5%
Release 0.3.1 (2005-11-15)
- Parrot PMCs are now used to implement classes ARRAY, BOOLEAN, CHARACTER, INTEGER, STRING and TABLE
- A new PMC kernel class PATHNAME implements some manipulations on directory/file pathnames
- Class JSON performs simple serialization
- Replaced the test harness with a more useful, more flexible and easier-to-use November 2005 model
- Added about 40 new tests
- A new kernel class INTERNAL can be used for (limited) introspection
- Preconditions are no longer checked by default; specify "--check" to enable runtime checking of all assertions
- The AMBER_OPTIONS environment variable can be used to set some command-line options
- Directives, prefixed with a hash, may be included at the top of a script and will override the command-line options
- Implemented a simplified initial version of the 'inspect' instruction (a kind of case statement)
- A new option "--debug-info" emits file/line/column/other info into the generated .pir file
- Various bug fixes
- Estimated progress towards release 1.0: language constructs 43%, libraries 6%, documentation 4%, robustness 4%
Release 0.3.0 (2005-10-20)
- "include" directive allows functionality to be included
from Parrot Intermediate Representation (*.pir) files
- "load" directive allows functionality to be loaded
from Parrot Bytecode (*.pbc) files
- Iterator 'each_line' of class FILE now smoothly handles
a file with no newline at the end of the last line
- The "can't find feature" error message now shows
the source location of the failing call
- Added kernel class CCLASS which enumerates character classes
that can be searched for within strings (uppercase, lowercase,
alphabetic, hexadecimal, whitespace, punctuation, etc)
- "Slurpy arguments" implemented, which allows the caller of
a routine to pass a variable number of arguments, which
are collected ("slurped") into the final formal argument if
it is followed by elipsis ("...")
- Routine bodies may be marked "external parrot" which means
that the implementation will be dynamically loaded from some
Parrot Bytecode or Parrot Dynclasses library.
- Added feature 'type_id' to class ANY
- Renamed feature 'isa' to 'is_a' in class ANY
- Added conversions between INTEGER, CHARACTER, BOOLEAN, STRING
- Added and reorganised many kernel class features as part
of testing three alternative kernel class implementations.
- Capitalised 'Current', 'Result', 'Void', 'True' and 'False'
to make SmartEiffel 2.2 beta 3 happy
- Various bug fixes
- Estimated progress towards release 1.0: language constructs 42%, libraries 3%, documentation 3%, robustness 3%
Release 0.2.3a (2005-09-24)
- Added an implementation of Conway's Game of Life to the examples directory
- A name clash between a local variable and a feature is now a validity error
- retry and recover instructions are now rejected if they appear outside of a rescue clause
- The generated PIR code now uses the if_null opcode instead of the deprecated isnull
- Manifest strings may now contain hex escapes, e.g. \{7F} (and \{0} obsoletes the \u escape)
- A new kernel class ARGUMENTS replaces the previous command-line-argument mechanism
- Escape codes are recognised within character constants, e.g. \n, \{1F}
- The catenation operator & now works for mixed-type expressions (CHARACTERs, INTEGERs etc) and catenates their string value
- Parrot (non-Amber) classnames now begin with @@ instead of
being enclosed by {{..}}
- Parrot (non-Amber) featurenames now begin with @ instead of
being enclosed by {..}
- Added the catenate.am test case
- Changed the 99 bottles of beer example to use is-functions rather than do-functions
- External 'pir' routines can now have postconditions
- External 'pir' routines can now have rescue and finally parts
- Disambiguation of left parenthesis:
A left parenthesis as the first token on a new line, or as the first
token after a semicolon, starts a new instruction. A left parenthesis
in other positions opens the list of arguments to a call.
- Argument count mismatches are now also detected for is-body functions
- The main script no longer takes a Class_invariant (only classes do)
- result is now a keyword, and can't be a formal argument or local variable name
- Local variables can now be initialized at the point of declaration, e.g. local answer := 42
- Source location is now always shown for Creation_expression errors
- Better error message when garbage is present in the main script
- Parrot (non-Amber) identifiers may now include the colon character
- Creation parameters can now also be supplied to Parrot (non-Amber) types
- Added features load_bytecode and sleep to class ANY
- Added amber-squares.am, a GUI example that uses Parrot's SDL wrapper
- Added kernel class RULE, for regular expression matching
- Added the Exploring Regular Expressions example (regexp.am)
- Documentation: Extended the website pages that describe language interoparability and the use of Amber keywords. Added website pages to document Amber symbols, other lexical elements, and operator precedence.
- Major refactoring of the lexical analysis and parsing code
- Various bug fixes
- Estimated progress towards release 1.0: language constructs 41%, libraries 2%, documentation 2%, robustness 2%
Release 0.2.3 (2005-08-18)
- An Amber class can now wrap a Parrot PMC class using the 'external' keyword (e.g. "class RANDOM external PythonRandom")
- External classnames with a leading dot indicate built-in Parrot classes (e.g. "class STRING external .String")
- An amber class may now contain features whose names are not Amber identifiers, by surrounding the feature name with braces (e.g. "{__get_string}")
- Moved much of the kernel/runtime functionality from 'kernel.pir' to external PIR routines in the kernel classes CHARACTER, BOOLEAN, TABLE, ARRAY, STRING and INTEGER.
- Added a web page on Interoperability to document how Amber interoperates with Parrot at various levels
- An Anonymous_agent must now be parenthesized before a Call_chain
- Implemented If_expressions of the form 'if-then-elseif-else-end', and added a test case for them
- Improved the way that the '--pretty' option displays anonymous routines, inheritance, multiline strings and class invariants
- Removed the 'case_insensitive' flag from the ace-files, as this flag is no longer supported by SmartEiffel
- Various bug fixes
- Estimated progress towards release 1.0: language constructs 40%, libraries 1%, documentation 1%, robustness 1%
Release 0.2.2 (2005-07-06)
- Feature bodies may now (additionally) be of the form 'is <Expression> end'
- Implemented multiline string constants, surrounded by double-triplequotes
- Added tests for multiline string constants
- Simple uses of 'do...rescue...retry...return...finally...end' now work
- Changed 'return' keyword to 'recover' to avoid confusion with C's 'return'
- Added query is_defined(obj) to class ANY
- Direct calls can be made to Parrot vtable functions by surrounding the function name with "{}"
- Better exception message
when a qualified call attempts to access a private feature
- Feature ANY.can now examines private features too
- Disabled 'inherited_attributes' test pending fix for Parrot bug #36411
- Added new test case (assertions.am) for all kinds of assertions
- Added license exception, pending resolution of SmartEiffel license issues
- Added lots of code snippet examples to the website "Keywords" page
- Assorted improvements to the generated PIR code
- Various bug fixes
Release 0.2.1b (2005-06-10)
- Generated C code is now included in the distribution, in addition to the Eiffel source files. You can now build Amber with or without a SmartEiffel compiler
- Added a CREDITS file to the distribution
Release 0.2.1 (2005-06-05)
- Added Array.each iterator
- Added ANY.argv to provide access to command-line arguments
- Added some features to support the Parrot PMC class "SArray"
- Implemented loop variants and loop invariants
- Added ANY.raise to raise a custom exception
- New kernel class PARROT_CONFIG provides access to Parrot install-time
configuration data
- Added many new features to kernel class "String"
- Added a new example program: word_count.am
- Added a new example program: indiana.am
- Added ANY.classname
- Tab can now be represented within a string constant as \t
- The FILE.each_line iterator now raises an exception if the file could
not be opened
- Added some more features to support the Parrot PMC class "Hash"
- Implemented infix "//" (integer division) and 'mod' (integer
remainder) in class Integer
- Added a new example program: "99 bottles of beer"
- Command-line arguments can now be passed from the Amber compiler to
the Parrot engine
- Implemented basic exception handling: a 'rescue' clause, and a
'return' instruction that cancels the exception and returns from the
current routine
- Added lots of test cases, and some more documentation
Release 0.2.0 (2005-05-16)
- Script files.
- Classes.
- Expressions.
- Creation, public and private features.
- Instructions: If, Loop, Assignment, Call.
- Seamless access to non-Amber objects with {{...}} notation.
- Binary operators: +, -, and, or, xor, *, /, & (catenation)
- Unary operators: +, -, not.
- Local variables are initialized to .Undef.
- Procedures and functions, in Amber or in embedded PIR.
- Wrapper around Parrot's String, Random, Integer, Boolean.
- Manifest integers, characters and strings.
- Manifest tables and arrays.
- Preconditions, Postconditions, Class Invariants.
- Loop variants, Loop invariants, Check instruction.
- Creation with and without arguments.
- Simple CHARACTER class.
- Inheritance, but no feature adaptation.
- Inline agents and iterators.
- Simple FILE class.
- A few introspection features in class ANY.
- 24 test scripts plus four examples.
sh: /home/web/cgi/eiffelzone/comments.exe: No such file or directory