User Tools

Site Tools


at:changelog

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
at:changelog [2007/07/27 10:10]
tvcutsem released
at:changelog [2010/02/11 17:54] (current)
tvcutsem
Line 1: Line 1:
 ====== AmbientTalk/2 ChangeLog ====== ====== AmbientTalk/2 ChangeLog ======
 +
 +**Deprecated. See [[http://code.google.com/p/ambienttalk/wiki/ChangeLog|the one on google code instead]]**
 +
 +===== build140508 (v 2.9) =====
 +
 +  * The 'TFarRef' trait has been renamed to 'TEventualRef'. All custom object references actually denote custom 'eventual references' (in E terminology). "Far references" only denote AmbientTalk's native remote object references. The dependent language modules (ambient refs, futures, leased refs, multirefs, ...) have been changed accordingly.
 +  * 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 'ignored', but rather becomes the return value of the message send (''o<-m()'') itself. This makes it possible for custom eventual references to immediately intervene in the message sending process (without having to install a custom actor mirror that overrides send). For 'local'/'near' references, receive simply schedules the message in the actor's own message queue.
 +  * 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. <-m()@Annotation), they can intervene in the message sending process by implementing a method named 'annotate', which takes the constructed message object as argument and should return a possibly extended message object (which may then e.g. override base_sendTo such that it incorporates novel message sending semantics)
 +  * We changed the implementation of AmbientTalk's support for regular expressions. Whereas we previously relied on a java.util.regexp port for pre-1.4 JVMs, we now rely on the Apache Regexp library. This may affect regular expressions written in AmbientTalk, since they must now follow the language provided by Apache Regexp. For most patterns, the syntax should remain the same.
 +  * 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 ':' on all platforms.
 +  * Added a lot of functionality to the standard lib. See at.ambient and at.lang
 +  * bugfix 56: [Actors/Concurrency] whenever:discovered: uses the service object of the first match for all subsequent matches (stimberm)
 +  * 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 'structural typing' (see at/lang/structuraltypes.at)
 +  * added a library to do more robust trait composition (see at/lang/traits.at)
 +  * added a library to access the M2MI Distributed programming library (see at/m2mi)
 +  * Asynchronous messages no longer carry a 'receiver' field. Instead, they only contain selector, arguments and types. The receiver is now specified in the send meta-level method, which now takes both receiver and asynchronous message explicitly. The important implication is that asynchronous message objects may now be safely sent multiple times. This used to fail because the receiver field could be erroneously re-assigned while a message would be in the inbox already.
 +  * Asynchronous message objects now carry a 'from(sender)' method which can be used to turn a message into a closure. The closure is a unary closure which asks the sender to send the encapsulated message to the receiver argument. Example:
 +[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 '!=', i.e. nil != obj
 +  * the try:catch:using: family of language constructs is extended with an finally: clause which allows specifying a block of code which is to be executed whenever the scope of the construct is left, whether by succesful termination, handler execution or exception propagation.
 +  * 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 "import" that first checks whether the imported object defines slots for all referenced aliased and excluded symbols.
 +  * it is now legal to write empty closures and method bodies, as in "object: { }" or "def m() { }".
 +  * Bugfix: [Serialisation/Parameter Passing] Isolates that use import cannot be safely parameter-passed (tvcutsem)
 +  * Bugfix: [Parser] Parser fails to parse files ending in single line comments (tvcutsem)
 +  * Bugfix: [Actors/Concurrency] Asynchronous messages behave ill-defined when used multiple times (tvcutsem)
 +  * 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) ===== ===== build270707 (v 2.6) =====
  
-  * changed part of the semantics of method invocation. AmbientTalk now supports the so-called [[todo:link|uniform access principe]] that allows client objects to abstract from the fact that a 'property' is implemented as a field or as a zero-argument method. Hence, from now on:+  * changed part of the semantics of method invocation. AmbientTalk now supports the so-called [[at:tutorial:objects#uniform_access|uniform access principe]] that allows client objects to abstract from the fact that a 'property' is implemented as a field or as a zero-argument method. Hence, from now on:
 a) o.m == o.m() if m is bound to a method (if it is bound to a field, the field's value is still returned) a) o.m == o.m() if m is bound to a method (if it is bound to a field, the field's value is still returned)
 b) m == m() if m is bound to a lexically visible method b) m == m() if m is bound to a lexically visible method
at/changelog.1185523814.txt.gz ยท Last modified: 2007/07/27 10:17 (external edit)