Alpha 3 (December 15, 2014)
Virtual machine
- A native code interface has been added, allowing platform-specific functions to be called from NewtonScript code. A NEWT/0-compatible "protoFILE" library is available that takes advantage of it.
- On OS X, NSM is now available as a native executable for the x86-64 architecture. This may provide better performance than the 32-bit x86 executable and allows 64-bit libraries to be used.
- Form parts in a special format are supported so that DyneTK can be used to create packages for NSM.
- RemoveScripts are now made use of.
- Performance has been greatly improved.
- If NSM quits because of an error, it will now display the function call stack to assist in debugging.
- Strings can now be compared with the primitive functions less-than, greater-than, less-or-equal, and greater-or-equal.
- Foreach loops are now supported. Note: "foreach deeply" is still not supported.
- The output of the built-in global functions Print and Write is now more like that of the Apple implementations and also respects the global variable printDepth.
- The global function IsReadOnly has been implemented.
- The instructions resend and resend-if-defined are now supported.
- The instruction send-if-defined now makes use of full inheritance, as it should.
- The primitive function set-class can now be used to set the class of a frame.
- The primitive function has-path is now supported.
- For frames with no class slot, the primitive function class-of now returns
'frame
as in the Apple implementation. - The global function BNot is now implemented. This is because Newton Toolkit generates a call to it where it should otherwise use the primitive function bit-not, which was also supported before.
- The built-in global functions Apply and Perform now check the types of their parameters.
- When calling a function, more sanity checks are done, such as checking whether the function being called is really a function.
- If NSM is forced to quit on the user's request (for example by pressing Ctrl+C), it will properly clean up after itself.
- The B field of parametrized instructions is now interpreted as unsigned except in the push-constant instruction, as specified by Newton Formats.
- The Haiku version is available in both GCC 2 and GCC 4 versions, allowing usage of both kinds of x86 libraries.
- Error messages are more detailed.
- Many bugs have been fixed.
Global function library
- The following functions have been added: ArrayInsert, ArrayMunger, ArrayRemoveCount, BeginsWith, BinaryMunger, DeepClone, DefGlobalFn, DefGlobalVar, Downcase, EndsWith, ExtractBytes, GetGlobalFn, GetGlobalVar, GlobalFnExists, GlobalVarExists, InsertionSort, IsAlphanumeric, IsInstance, IsSubclass, LFetch, LSearch, Map, RemoveSlot, SetOverlaps, SetRemove, SetUnion, StrCompare, StrExactCompare, StrMunger, StrReplace, SymbolCompareLex, UndefGlobalFn, UndefGlobalVar, Upcase.
- Ceiling now behaves as it should.
- SetContains now returns the correct value.
- StrPos is now faster.
- Substr now emulates the undocumented behavior of the Apple implementation for special start and length values.
Alpha 2 (January 28, 2014)
First public release.