iMops Changelog

What's new in iMops 2.0 Beta

Apr 22, 2014
  • New functionalities:
  • iMops kernel now can be built by iMops itself.
  • Font size preference menu was added. The selection will be saved on quit.
  • OS will save the position and size of the main window on quit and restore them on relaunch.
  • The state of ‘echo during load’ flag is saved on quit and restored on relaunch.
  • A small optimizations of object bindings etc. (some excessive move operations are reduced).
  • A word FLITERAL was defined.
  • Bugs fixed:
  • Negative floating point number (literal) disturbed the next integer literal value.
  • Iterated DIE calls (DIE itself may DIE in error handling) are stopped.
  • Execution of a marker word didn’t make itself undefined (Thanks to George Kozlowski for the bug report).
  • RL (reload) didn’t work because of a bug of PUT: method in STRING class and of a wrong algorithm.
  • Optimize-Too-Much bug concerning locals.

New in iMops 1.23 (Mar 31, 2014)

  • Bugs fixed after 1.22:
  • SetSize: method of String class was wrong, which may cause irregular crashes.
  • Not: method of BYTE class was wrong (a typo).
  • Previously, EXECUTE saves STATE before the execution of the passed-in xt and restore STATE after the execution in order to run the content of the xt in execution state (for Forth standard says EXECUTE shall operate the execution semantics of the xt.).
  • But the save&restore scheme is wrong since the word for which the passed-in xt stands may switch the STATE (For example .. ['] ] execute .. or like that), which will be disturbed by the save&restore of STATE in EXECUTE.
  • So, the code for save&restoring STATE in EXECUTE was dropped.
  • Record with its own name set a wrong flag, so that an instance of the class might be broken.
  • There was a subtle register allocation bug.
  • New functionalities added after 1.22:
  • The word DUMP, and default dump: method has become more informative (Thanks to Mike Hore).
  • The contents of the source code, exceptionhandler2, has been incorporated in iMops application.
  • The exception handler will be installed at launch of iMops. So even when you do 34 0 / on iMops, immediate crash will not happen, though noisy alerts will be printed. The exception handler will not be installed in the case of installed applications.

New in iMops 1.22 (Sep 30, 2013)

  • Many bugs were fixed and some new features added.

New in iMops 1.21 (Jun 17, 2013)

  • Some serious bugs were fixed.

New in iMops 1.11 (Jan 28, 2013)

  • Many bugs fixed.
  • The main new feature is framework call.
  • A simple demo source file "OpenGLCalls" included.

New in iMops 1.1 (Sep 17, 2012)

  • Some bugs have been fixed, some new features added.
  • String+ class source file by Mike Hore included.

New in iMops 1.01 (May 28, 2012)

  • Bug fixes:
  • put: and actions: of X-Col were not set the size ivar data.
  • .( crashed on execution.
  • class_as> early bind failed when used at the top of a method definition.
  • Ivar name without message binding couldn't be found in an inline definition.
  • Assembly type word (:code-;code definition) would not run because the header data were broken by INTERPRET. (Some refactoring and potential bug fixing in ASM source files.)
  • Added features:
  • FABS was a bit optimized.
  • Optional class library, Complex and fpMatrix added (the source file "mathnums" in source/iMops_ext/ folder.)
  • FP code compilation was improved a little (some unnecessary moves will be deleted.).
  • As an experimentation, the word search order was changed so that method search comes after normal word search.
  • That means iMops can find a word whose name ends with colon like "BUFFER:". (But such words may be confusing, for they look like message sendings.)

New in iMops 1.0 (Feb 20, 2012)

  • Some bugs are fixed and some features improved.
  • PDF class reference included (though uncompleted yet).

New in iMops 0.9 Beta (Jan 16, 2012)

  • Some bugs are fixed and some features improved.
  • Source code editor "iBucket" and its source code files are included.

New in iMops 0.8 Beta (Jan 9, 2012)

  • Bugs:
  • LOCATE failed to find when the word definition is in the source file loaded last.
  • LOCATE failed in nested file load.
  • Save/restore registers before/after system function call was a design-mistake because it didn't take callback event handler into account. (File Navigation panel might crash because of it.)
  • Object_base and loop_counter registers (R8 and R11) are now saved in the return stack frame in external calls.
  • TRY_NUMBER (number interpreter) was neglecting BASE. Now FP number string using E, like 3.42e-2, also can be interpreted.
  • Wrong algorithms when there are more than 3 named params.
  • REVEAL was processing too much, because of which it was not idempotent.
  • Stack matching bug, which came to the front in certain combinations of stack conditions and Int/FP parameters of callee.
  • S>F bug, when the output FP number must go into stack memory.
  • RELEASE: method of Button classes cleared too mach (even the Bezel Style).
  • Added features (words):
  • NEED and the synonym INCLUDE, which are same as // except that those will skip already loaded files.
  • RL (Reload). Parse a file name and reverts CDP, DP and dictionary threads to the beginning of the file if the file was already loaded, then load the file. When the file has not been loaded, it is same as //.
  • Install
  • Install stand-alone application from Utilities Menu.
  • Corresponding word is __DOINSTALL.
  • Stand-alone application needs the startup word. Startup word need not call RunEventLoop. It should do some preparation to create and set menu, install event handlers or others up to just before calling eventloop.
  • Demo programs (fractalDemo and cgrDemo) are adapted to be INSTALLable.
  • LocalSection
  • This is a bit different local section from that in PowerMops.
  • It can have named parameters and/or local variables that are common in inner words. But the upper limit of the number is only 3 (register locals only). However a section can have inner objects and/or inner values(variables). Those are allocated in dictionary but inaccessible form outside of the section, like inner words. Inner objects are initialized on entry and released on exit, while inner values/variables are not automatically initialized(like private data of CREATE-DOES> words.).
  • Since it is different from original local section, the opening word is changed from LOCAL to LOCALSECTION. But the other syntax is similar to original. Inner words cannot have its own locals or temporary objects, of course.
  • This feature may be not very useful.
  • Apple Event handling.
  • iMops now can receive Apple Event command type 'TEXT' and 'utf8'.
  • If some text editor send code string as 'TEXT' or 'utf8' data apple event to iMops, the code string will be interpreted and executed by iMops.
  • Open Document Apple Event Handler. When open document AppleEvent is sent from any other application to iMops, iMops will load the file as a source code file.
  • A bit more intelligible error messages with a guess of the word where the error happened.
  • Machine(System) Exception handler and Objective C Exception handler option. By loading the file, "ExceptionHandler", most of immediate crashes could be avoided. Machine exception will print long message.
  • FP(Vector) registers information can be swathed on/off by words
  • FP-INFO-ON and FP-INFO-OFF.
  • ObjectiveC BLOCK glue.
  • Concretely, Window Modal and Modeless file navigation panels are supported in File class.
  • The code and some description is in the file, FileClass.