This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
at:changelog [2008/05/14 11:05] tvcutsem added |
at:changelog [2010/02/11 17:54] tvcutsem |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== AmbientTalk/ | ||
- | ===== build140508 (v. 2.9) ===== | ||
- | |||
- | * The ' | ||
- | * The meta_receive operation is now invoked in the same execution turn as when the message is sent. The return value of receive is no longer ' | ||
- | * When an actor processes the next msg from its inbox, it again dispatches to the meta_receive operation of the receiver. Hence, receive can be used by proxies to intervene in the async message sending process, and by all other objects to intervene in the async message delivery process. | ||
- | * the send operation is still defined on the actor mirror and can still completely override the behaviour of message sending (which is still used by the futures language module). | ||
- | * When type tag objects are used to annotate messages (i.e. < | ||
- | * We changed the implementation of AmbientTalk' | ||
- | * Bugfix: [Symbiosis] AT nil value sometimes erroneously converted into Java null value (tvcutsem) | ||
- | * Bugfix: [Symbiosis] constructor of XSymbiosisFailure does not deal with a null symbiont (in case of a static method) (tvcutsem) | ||
- | * Bugfix: [Evaluation Protocol] Quoting a universal message send with something other than a message creations raises a type mismatch (tvcutsem) | ||
- | * Bugfix: [Evaluation Protocol] Quoting a message creation with a single annotation raises a type mismatch (tvcutsem) | ||
- | * Bugfix: [IAT Shell] IAT can't handle empty lines (tvcutsem) | ||
- | |||
- | ===== build130208 (v 2.8) ===== | ||
- | |||
- | * AT objectpath is now separated according to system-specific path separator, not according to ':' | ||
- | * Added a lot of functionality to the standard lib. See at.ambient and at.lang | ||
- | * bugfix 56: [Actors/ | ||
- | * bugfix 54: [Distribution (AmbientTalk layer)] multiple discovery listeners for the same type are triggered too much (tvcutsem) | ||
- | * bugfix 51: [Evaluation Protocol] Fields and methods with same name can co-exist in one object (tvcutsem) | ||
- | * bugfix 50: [Distribution (AmbientTalk layer)] Objects are exported under a new object id every time they are parameter-passed (tvcutsem) | ||
- | * bugfix 47: [Distribution (Network layer)] failed to online network (tvcutsem) | ||
- | * bugfix 49: [Distribution (Network layer)] Cannot access system or lobby in code deserialized in the discovery actor (tvcutsem) | ||
- | |||
- | ===== build170907 (v 2.7) ===== | ||
- | |||
- | * added a library to do ' | ||
- | * added a library to do more robust trait composition (see at/ | ||
- | * added a library to access the M2MI Distributed programming library (see at/m2mi) | ||
- | * Asynchronous messages no longer carry a ' | ||
- | * Asynchronous message objects now carry a ' | ||
- | [1, 2, 3].map: .+(1).from(self) => [2,3,4] | ||
- | * booleans now have support methods and:and: and or:or: to avoid having to write too many braces :) | ||
- | * the nil object now understands ' | ||
- | * the try: | ||
- | * round, floor and ceiling are now also defined on numbers (and they all return self; they were previously only defined on fractions) | ||
- | * the iat shell now supports multiline input. When a line ends with a \ character, the next line is implictly read. This change also affects the behaviour of system.readln() | ||
- | * Added a safety check when using " | ||
- | * it is now legal to write empty closures and method bodies, as in " | ||
- | * Bugfix: [Serialisation/ | ||
- | * Bugfix: [Parser] Parser fails to parse files ending in single line comments (tvcutsem) | ||
- | * Bugfix: [Actors/ | ||
- | * Bugfix: [Symbiosis] Classloader used by Coercer not always correct (tvcutsem) | ||
- | * Bugfix: [Parser] Selection of keyworded methods (tvcutsem) | ||
- | * Bugfix: [Reflection] Equality of introspective mirrors is ill-defined (tvcutsem) | ||
- | |||
- | ===== build270707 (v 2.6) ===== | ||
- | |||
- | * changed part of the semantics of method invocation. AmbientTalk now supports the so-called [[at: | ||
- | a) o.m == o.m() if m is bound to a method (if it is bound to a field, the field' | ||
- | b) m == m() if m is bound to a lexically visible method | ||
- | c) first-class methods are still supported, but require explicit syntax: | ||
- | o.&m will grab the method as a first-class closure. If m is bound to a field instead, o.&m will return an " | ||
- | d) assignment is now treated as message passing, with x := 5 being equal to lexically invoking a method named " | ||
- | |||
- | The UAP change is unfortunately not entirely backward-compatible with existing AmbientTalk code. When you upgrade to this release, you'll have to check the following: | ||
- | a) where you used to write ' | ||
- | b) where you used to write ' | ||
- | * added '' | ||
- | * added the construct '' | ||
- | * Various bugfixes w.r.t. serialization of objects (isolates). | ||
- | |||
- | ===== build190607 (v 2.5) ===== | ||
- | |||
- | * Consistently renamed ' | ||
- | * '' | ||
- | * the '' | ||
- | * the '' | ||
- | * the '' | ||
- | |||
- | While this change is not backwards-compatible with current AT code (you really need to find/ | ||
- | |||
- | ===== build080507 ===== | ||
- | |||
- | * added support for leased object references (see at/ | ||
- | * the symbiosis layer now treats symbiotic calls to AmbientTalk objects representing a java.util.EventListener as pure asynchronous calls | ||
- | * added support for test suites which group the execution of multiple independent unit tests | ||
- | * added support for asynchronous unit tests: these are test methods prefixed with ' | ||
- | * added support to unquote objects in a quasiquoted expression. Furthermore, | ||
- | * added restrict: | ||
- | |||
- | Bugfixes: | ||
- | * [Parser] Cannot unquote-splice into parameterlist and body (smostinc) | ||
- | * [Parser] Escape characters do not work in text (smostinc) | ||
- | * [Parser] Unquoting in symbol position not possible (smostinc) | ||
- | * [Reflection] Unquoting objects in a parse tree yields incorrect conversions to Expressions (smostinc) | ||
- | * [Evaluation Protocol] Quoting a " | ||
- | * [Distribution (AmbientTalk layer)] After retracting unsent messages, far references won't transmit any messages anymore (tvcutsem) | ||
- | * [Symbiosis] Creation of java.lang.Long aftected by Bugfix 0000014 (tvcutsem) | ||
- | * [Natives] Support for native types conversions (tvcutsem) | ||
- | * [Distribution (AmbientTalk layer)] when: | ||
- | * [Symbiosis] Symbiotic instances of NAT classes are wrapped (tvcutsem) | ||
- | * [Evaluation Protocol] Unquoting operator unquotes too much (tvcutsem) | ||
- | * [Parser] Cannot invoke methods on literal numbers (tvcutsem) | ||
- | * [Evaluation Protocol] Cannot negate fractions directly (tvcutsem) | ||
- | |||
- | ===== build060407 ===== | ||
- | System library additions: | ||
- | * added a unit testing framework, see at/ | ||
- | * added a proper vector abstraction, | ||
- | * added support for ambient references, see at/ | ||
- | * added initial support for exceptions, see at/ | ||
- | * added a small timer library for scheduling code, see at/ | ||
- | * added a minimal object inspector using symbiosis with java, see at/ | ||
- | |||
- | Implementation changes: | ||
- | * The AT/2 interpreter no longer uses any of the JGroups or Log4J Dependencies. Rather, distributed network communication is performed in a dedicated manner. This improved performance, | ||
- | |||
- | Bugfixes: | ||
- | |||
- | * 0000009: [] Bug in Detection of offline VMs (in new distribution layer) (tvcutsem) | ||
- | * 0000010: [] Race condition in distribution layer when going offline (tvcutsem) | ||
- | |||
- | ===== build230307 ===== | ||
- | * added a new option ' | ||
- | * Symbiosis: when Java code performs obj.equals(obj2), | ||
- | * Meta-level interface: createMessage' | ||
- | * Added new syntax to support the ' | ||
- | * Reworked the futures language module to support ' | ||
- | The futures language module now also exports two stripes, ' | ||
- | Hence, you have two options to work with futures from now on: you can evaluate ' | ||
- | * distributed memory management extensions by Elisa: it is now possible to take an exported object offline (using the takeOffline native). Far references that point to objects that are taken offline perceive this event as though it was a disconnection, | ||
- | * added the ' | ||
- | |||
- | ===== build150307 ===== | ||
- | |||
- | * Contains important bugfixes w.r.t the 050307 release. | ||
- | * Based on comments by all of you during our meeting, we changed the semantics of actor.install: | ||
- | actor.install: | ||
- | If you still want to mimick the old behaviour, you can do so with code like: | ||
- | < | ||
- | def mixin(protocolCode) { | ||
- | def oldActor := actor.install: | ||
- | object: { | ||
- | def uninstall() { | ||
- | // restore the previously active protocol | ||
- | actor.install: | ||
- | } | ||
- | } | ||
- | } | ||
- | </ | ||
- | |||
- | * The import: native now works, but to make it work, we had to implement it as syntax, not as a native method. If you would like to find out why, come by and ask me :-) Here's an example of how to use import: | ||
- | < | ||
- | def trait := object: { | ||
- | def foo() { self.bar() + 3 }; | ||
- | def bar() { 5 }; | ||
- | def baz := 3; | ||
- | }; | ||
- | |||
- | def obj := object: { | ||
- | import trait alias bar := tralala exclude baz; | ||
- | def bar() { 1 }; | ||
- | } | ||
- | |||
- | obj.bar() => 1 | ||
- | obj.foo() => 4 | ||
- | obj.baz => error | ||
- | obj.tralala() => 5 | ||
- | </ | ||
- | * The futures language mixin now works! Please check out the source code in the native library provided with the distribution under at/ | ||
- | Example: | ||
- | < | ||
- | import / | ||
- | enableFutures(); | ||
- | def id(x) { x } | ||
- | when: self< | ||
- | </ | ||
- | It might be that we later decide to invoke ' | ||
- | * The mirror architecture has been updated, but I'm not going to detail all bugfixes/ | ||
- | * Project/ | ||
- | * Don't forget to change the value of the AT_HOME environment variable in TextMate to point to the latest build! | ||
- | * Based on the proposal by StijnT, I changed the structure of the AmbientTalk ' | ||
- | path1: | ||
- | to | ||
- | name1=path1: | ||
- | The names given in the path will be the names of slots defined in the lobby at startup time. For example, if you specify: | ||
- | < | ||
- | Then in AmbientTalk: | ||
- | lobby.foo is bound to the namespace "/ | ||
- | lobby.bar is bound to the namespace "/ | ||
- | * By default, if you do not give an object path to iat in the command line (using -o), IAT will use the following path: | ||
- | '' | ||
- | In other words: it uses the value of '' | ||
- | It is now allowed to shadow names in the object path (a warning is printed on the console to make you aware of the shadowing). For example, if your '' | ||
- | < | ||
- | then '' | ||
- | * If you do not give the location of an init file to iat (using '' | ||
- | * In order to run IAT properly from within Eclipse with this new semantics, you have to set the value of the AT_HOME environment variable in your 'run configuration' | ||
- | < | ||
- | This passes to the JVM the value of the '' |