Phix 1.0.3 uploaded
- Posted by petelomax Aug 09, 2023
- 2002 views
Maintenance release, nothing particularly exciting, unless a half-complete (or is that half-incomplete) GUI is your thing.
Bugfix: IupToggleInt unrecognised by p2js Added basic enum-style nested constants, eg constant ABCD = {A:=$, B:=$, C:=$, D:=$} is the same as constant ABCD = {A:=1, B:=2, C:=3, D:=4} (15/3/23, used in xpGUI.e) Moved begins() out of vlookup[.e/htm] to match.e, where it should clearly always have been. Replaced bPrefW parameter on requires() with bQuiet, and added a simple mad-spawn prevention. Minor improvement to the error message for return <const> in a procedure, see readme.txt. Fudge: get_struct_field() does not retrieve floats/doubles correctly. bool bAsFlt=false added as a temporary work-around, and I've suggested it might signal IEEE754s via a -ve size, but that would of course justify a fair bit more testing than I can afford right now. Minor improvement to the location of a "p2js violation: sq_add() must be used here" error on "sequence lines = tagset(9)+file*10", it now points at the '+' rather than next line. Added "with nested_globals", under which "local constant S = {A:=1}" declares S as local, but A as global. There is now also a complementary "with nested_locals" for the inverse. Added a new get_possible_constant_names() diagnostic aid, see the docs for further details. Bugfix: "for l in split(text,'\n') to 4 do" triggered an attempt to subscript an atom error, traced to a missing saveFunctionResultVars() in DoFor(), because the to clause meant it was not doing the implicit length() that would have done exactly that. [19/6/23] Known Bug: under 64-bit (while a) "while p<1e10 do" works fine were p declared atom, it is possible to declare it as integer, and suddenly that loop behaves as "while true do". The problem is that pglobals.e declares MAXINT as #3FFF_FFFF rather than either that or #3FFF_FFFF_FFFF_FFFF... However attempts to fix that led to catastrophic failure, especially on 64-bit Linux, such that it would no longer self-compile, hence a proper fix has been deferred to version 2.0.0 or later. See rosetta/Ormiston_triplets.exw. Just in case you missed it, the compiler uses "MAXINT<1e10" to completely optimise away that test to "true", which at least in one sense is perfectly correct/wanted. It may be possible to selectively use a new atom T_MAXINT which is target-specific, but I can't really justify expending any (more) time and effort on that right now. Bugfix: (partial, 23/6/23) pltype.e (which even I barely understand) now contains: -- ntyp = or_bits(ntyp,T_N) ntyp = or_bits(rootType(ntyp),T_N) It was certainly an error to combine a builtin and udt type like that, at least. It has triggered a knock-on error in tests/p46ltype.e under 64-bit (only??) that warrants further investigation, and maybe back out a few other changes made. Added median() and average() builtins. Move phi into gcd.e, merged min/max/smallest docs. Added mpz_set_q(), mpz_next_prime(), mpfr_fmod(), mpfr_si_pow_si() to mpfr.e Added builtins/primesieve.e but you'd have to download the dll, and it's not documented. Improved fmt error messages in [s]printf(): the generic "error in format string" is now "unexpected end of format string", "missing ] in format string", "unknown specifier:%c", "comma fill not supported on %c", or "show plus not supported on %c". Alpha version of xpGUI: maybe ~60% complete, the most glaring omission being the layout management, so few things get the desired position/size/spacing as yet. The docs should be fairly close to the final form, I've probably spent more time on them than the code.
Usual place: http://phix.x10.mx/download.php (1.0.2 notes: https://openeuphoria.org/forum/m/137643.wc )