Re: wikipedia draft
- Posted by petelomax Jan 11, 2021
- 1713 views
Comparison with Euphoria
- Phix has 8-bit strings and variable length slice substitution
- Phix requires explicit sequence ops such as sq_add() rather than an implicit inline +
- Phix has structs and classes, with reference semantics
- What Euphoria calls maps, Phix calls dictionaries, and uses a different syntax
- Phix has multithreading, as well as multitasking, whereas Euphoria only has the latter
- Phix allows negative indexes from right to left, mirroring positive indexes' left to right
- Phix has named parameters, and does not permit parameter omission with ,, syntax
- Phix allows the explicit := and == as well as the (implicit) = determined from context
- Phix allows nested constant declarations via the := operator
- Euphoria does not support the ~ << >> && || operators
- Phix allows ; as an entirely optional statement separator
- Euphoria requires equal() and compare() in many cases where Phix allows ==, <, etc.
- Euphoria allows full expressions in parameter defaults whereas Phix is relatively limited
- Euphoria returns a length of 1 for an atom, whereas Phix (deliberately) crashes
- Euphoria requires routine_id("name") whereas Phix also allows a bare name
- Euphoria requires call_func(rid,{...}) whereas Phix also allows rid(...)
- Phix allows inline variable declaration in desequencing operations
- Phix has a format directive to specify compilation options
- Euphoria can be transpiled to C, Phix cannot
- The ternary operator (iff) in Phix has full short-circuit evaluation
- Phix allows forward routine declarations and un-named parameters
- Euphoria supports binary/octal/hex/decimal, Phix supports all number bases 2..36
- Euphoria allows floating-point for loop control variables, Phix does not
- Phix allows static variables and routine-level constants (except on fwd calls)
- Euphoria supports enum by /N, which Phix does not
- Euphoria's private/export/global are all simply treated as global by Phix
- Several include and with/without options are different and/or incompatible
- Euphoria namespaces can reference the current file, which is broken in Phix
- Euphoria allows forward references to variables, Phix does not
- Euphoria allows implicit discard of function results, Phix requires "{} ="
- Euphoria has with label, break label, and a loop construct, Phix does not
- Phix has a try/catch/throw, whereas Euphoria has no exception handling
- Phix allows min(i,j) as well as min({i,j,k,..}), ditto max()
- Euphoria still has match_from() whereas Phix relies on match() optional start
- Euphoria requires explict includes for many things Phix can auto-include
- Euphoria yields 97.36 for lower(65.36) whereas Phix yields 65.36
- Euphoria permits daisy-chaining delete_routine(), Phix is single-shot
- Euphoria must allocate_string for c_func, Phix can pass strings directly
- Phix supports inline assembly (and sometimes relies on it)
- The machine_func/machine_proc of Euphoria are mostly deprecated in Phix
- Euphoria allows goto whereas Phix uses #ilASM{ jmp :lbl } to deter newbies
- Despite all these, quite a bit of legacy code still runs happily on both.
https://openeuphoria.org/forum/m/133443.wc
https://openeuphoria.org/forum/m/117059.wc
Wow, that has grown a few extra limbs. . .