Falcon 0.9.4 - Eagle Release
不知不觉,falcon已经发布了0.9.4,我忙着加班呢,官方说的几个idea模块都没有
实现呀,继续关注中
Changelog
Falcon (0.9.4)
* fixed: ClassMethod couldn't be used as classes for new instances, and
any class in a property would have generated a class method when
accessed.
* fixed: exit() and other termination requests are honoured in interactive
compiler.
* fixed: Re-enabled falconeer and updated falcon skeleton module.
* added: methods bind(), unbind(), bound() and value() to LateBind metaclass.
* minor: Removed VMachine::raise*Error functions. This removal has also
helped to spot many buglests in various modules that consisted in
calling the old functions, now actually shortcuts for "throw",
before doing some cleanup.
* major: VM main loop and context (coroutine) support redesigned.
* fixed: Some issues in coroutine swapping and spurious wakeups are now solved
indirectly by the new VMContext system. This also greatly improves
context switches times.
* added: Methodic function properties() to determine properties of OOP items.
* fixed: GC Marking of items stored uniquely as method "self" part was broken.
* fixed: Methods of methods was not correctly dereferenced into vm->self.
* major: Added support annotation attributes.
* major: The CoreArray is now based on an inner element derived from Sequence.
This makes possible to abstract many operations (but this is not visible
at language level).
* major: Added comprehension method to Array and List classes (this can be used
to create lists from list definitions very similarly to Python, but
still being more flexible.
* fixed: Some string methods renamed:
String.backFind => String.rfind (wasn't working anyhow)
String.backTrim => String.rtrim
String.frontTrim => String.ftrim
* added: Functions argv() and argd() returning respectively the vector and the
dictionary of the received parameters.
* fixed: Substring primitive wasn't correctly working when switching to
international strings.
* fixed: Better behavior of the interactive compiler, now a bit more resistant
to user error.
* fixed: interactive mode didn't work with wide strings and international
characters.
* added: Methodic function describe() that can be used as a reflective inspect()
* minor: Now using describe() instead of toString() in interactive mode.
* fixed: Access to static methods in classes was broken.
* fixed: In ranges, step 0 now represents the "default step"; open range is
indicated with a special value.
* minor: Ranged access to membuf now creates membuf slices.
* minor: Added function arrayCompact and method Array.compact() for finer memory
usage control.
* minor: .ptr() for integer dereferenced them; this seems to be unneeded, at
least in the main engine; now ptr() on integers just returns the
integer itself.
* fixed: Representation of memory buffers on big endian machines.
* fixed: Slowness on Sparc32 bit platform.
* minor: Performance issue on Big endian platforms.
* minor: TypeID returned by typeOf and typeId for integer items is now
NumericType.
* major: Closures are not anymore transparent (arrays). From the outside, they
look as functions, but they record the value of local variable.
* major: A more flexible definition of methods, and a more formal definition of
call points and call structures allowed to fix some weirdness in the
resolution of "self" with methodic arrays.
* fixed: Closures can now refer to symbols in any parent, not just in the topmost
parent.
* minor: Closed variables in closures are now always received by reference. This
allows all the closures created in a function to share and be able to
modify the same variable environment.
* minor: Rationalized iterators; as a result, they won't work on Strings and
MemBuf, for a few releases at least.
* minor: removed List.erase() and List.insert() (now done via iterators).
* major: Added comprehension to dictionaries (just as other sequences, but with
pair being taken as [key, value] items for addition).
* major: Now, '*' operator on strings replicates them. Unicode addition is done
via '%', while '/' adds its argument to the last character of the string,
so that "a" / 1 => "b"
* minor: Added Set() VM assisted (sequence) class.
* major: Added support for generators in for/in sequences.
* fixed: Fixed error reporting in faldisass.
* fixed: Fixed error reporting in falrun.