Phix 0.8.3 uploaded
- Posted by petelomax Feb 02, 2021
- 2499 views
Usual place: http://phix.x10.mx/download.php (0.8.2 notes: https://openeuphoria.org/forum/m/135185.wc )
This is a maintenance release. From the readme
22/12/2020: Bugfix: "class x string name procedure name()" now produces the error "invalid type". Note that all methods are "virtual" in the sense they can be overidden, ideally it would check that it was only overriding something from an "extends" clause, but that is not particularly simple. Instead it is saying it cannot override a string with a procedure. Likewise it will trigger an error if you try to override a procedure with a function and vice versa. I would have liked to put signature checks in there, but alas that information is not held (think "pure virtual"), or rather it is quite a bit more difficult to dig out. 24/12/2020: BUGFIX: in something (well, anything!) like the following sequence x = repeat(0,rand(50)) if <condition> then x = {} -- (or any other [fixed] length) end if -- <<== **bad mergeBlocks()/mergeTypes() here !!!** if length(x)=0 then ?9/0 end if -- <<== uses if 0=0 then!! pltype.e was replacing/merging the lslen[prev] of -1 (aka "no idea yet") with the lslen[curr] of 0, which meant it would think x was length 0 (or whatever) even after condition failed. It now leaves it alone (the last if now /looks/ at x's length). Amazed this was not caught years ago, and even more amazed that p -test didn't start /any/ bitchin... 02/01/2021: Replaced sys_exit with sys_exit_group, for proper linux s/down. 08/01/2021: Moved initialisation in sha256.e to permit forward calls. 10/01/2021: Added hideScope/restoreScope for nested functions, which hide anything and everything that would otherwise require a closure. Note that some work remains outstanding in this area. 21/01/2021: Tightened up on builtin overrides, to prevent such nonsense as integer integer, atom atom, string string, and so on. constant SLASH was a bit of an innocent bystander, though you/I should probably be using the builtin constant anyway. 21/01/2021: BUGFIX: Ctrl [] in Edita/Edix now correctly skip backtick strs. 21/01/2021: Edita: easinst.ew now uses GetWindowText, should be better. 21/01/2021: BUGFIX: Edix now uses an ini file rather than IupConfig for the list of open files, which was always corrupting itself. Close file now works properly, not mangling the table of tab handles. 25/01/2021: IupCloseOnEscape() is now applied by default to all IupDialog, and the latter has a new bEsc parameter to turn that off. 25/01/2021: get_routine_info() now has a bName parameter, which will avoid unnecessarily populating the symbol table with actual names. 25/01/2021: ENH: IupScintilla() added to pGUI, along with a demo. 29/01/2021: BUGFIX: deleting a dictionary entry was moving the key but not the data(!!). Many thanks to irv for finding this nasty bug. 29/01/2021: New still_has_delete_routine() function. Used by the internal type checking routines of builtins\structs.e to identify any now-invalid struct/class instances, and prevent accidentally clobbering a slot now occupied by something else. 30/01/2021: BUGFIX: tagset was using ceil() not floor() for some unknown reason, and thus overruning the limit (when step!=1). 01/02/2021: ENH: allow dot notation on "struct" variables (previously it only allowed that on actual struct/class definitions). Eg/ie -- procedure test(Widget x) -- (was ok) procedure test(struct x) -- (now ok too) x.field = 1 end procedure 01/02/2021: Allowed delete_routine(x,0) to remove any prior association. The docs said you could, but the front-end disallowed it.
There was also an "while 1 do end while" going into an infinite loop, that is in the compiler itself,
branch straightening the same jump to itself forever, which I can't see listed above.