[F-Script-talk] F-Script Developer Preview 3 released
Brought to you by:
pmougin
From: Philippe M. <pm...@ac...> - 2001-03-25 22:24:22
|
Hi all, I've just released F-Script developer preview 3. It runs on Mac OS X release candidate. Binary : http://www.fscript.org/dev_preview/FScriptBin-20010324.tar.gz Source: http://www.fscript.org/dev_preview/FScriptSources-20010324.tar.gz The documentation on www.fscript.org is not yet updated. Be sure to read the release notes below. -- Phil F-Script Developer Preview 3 ======================= Binaries Installation =============== Unpack FScriptBin-20010324.tar.gz and put FScript.framework in ~/Library/Frameworks/ where "~" is your home directory. You should then be able to use the "fs" application and the "FSInterpreterViewPalette" interface builder palette. Source Installation =============== Build the FScript.framework project first. Note: the compiler hangs when trying to use the -O3 or -O2 (optimization level 3 or 2) for source file "ConstantsInitialisation.m". Use -O1 instead. In the "fs" project you may need to enter a correct path for linking with FScript.framework. To do that, in the "Project" menu, choose "Add Frameworks" and select the FScript.framework you have built. Important release notes =================== The two main goals of this release are: 1) Support for Mac OS X release candidate. 2) Bring a stabilized syntax. In addition, there are several internal and external modifications, including new feature for the graphical object browser and an improved compiler and run-time. At run-time, the NSInvocation API is much less used than it was, and a more direct message sending scheme is used by the F-Script engine when possible (we still use NSInvocation in some case). Speed increase coming from this optimization measured on the internal F-Script test suite: nearly 20%. Changes in the syntax -------------------------------- As you will see, the general goal is to get much closer to the ANSI Smalltalk syntax. We were not that far but there was some big differences, for instance we had a different instructions separator. With this release, we are much more in line with the st syntax. - ";" was used in the previous version as the instruction separator. It is replaced by "." in this version. In the previous version "." was a method selector defined on Array and String, where it was used to express indexing. Since, "." is now the instructions separator, it can no more be used as a symbol for binary method name. It has been replaced by the method "at:". This means that in order to index an array, you no more use "myArray.index" but "myArray at:index". The "." notation was handy and "at:" may seems ugly in comparison. This is why new notation for indexing using "[]" is experimented in this new version: "myArray[index]" is equivalent to "(myArray at:index)". This [] notation is just for experimentation and is not part of the new official syntax. I'm not sure at all it will be integrated in the future, since it adds some complexity to the syntax. - Since "." can no more be used in method name, the method ".." in class Array is replaced by "replication:" - ";" is now used for message cascading. The expression: "myObject msg1; msg2; msg3" is thus equivalent to the expression: "myObject msg1. myObject msg2. myObject msg3" - The use of "//" for one line comment is deprecated - "^" become a reserved character, no more usable in operator names. The "^" operator in class Array is replaced by the method "transposition:" - "$" become a reserved character, no more usable in operator names. The "$" operator in class Number is replaced by "<>" . - Number literal no more use "E" as exponent letter, but use "e","q" or "r" - String literal now use doubled ' to denote a ' inside the string. Example: 'I am a string with a '' inside' Other modifications that may affect current code ---------------------------------------------------------------- - In class FSBoolean: "&" and "|" methods can no more be used with a block as argument for short cut evaluation. This feature is now provided by two new methods "and:" and "or:" - WARNING !!! Class Number: method "log" is renamed "ln". Method "log10" is renamed "log". - Class Number: methods "acos", "asin" and "atan" are deprecated. Use "arcCos", "arcSin", "arcTan" instead. - Class Array: method "rotatedBy:" replaced by "rotation:" - After some discussion, it has been decided that method "size" of class Array and String is no more considered deprecated. |