Euphoria Release Notes
Version 2.3 Official Release February 11,
2002:
This release updates the Euphoria Interpreter, the Euphoria To C Translator, and the
Interpreter Source Code product, for all platforms.
- The DJGPP version of the interpreter source code now uses GNU C's dynamic labels, just
like the Linux version. This allows it to achieve full speed, without the need for any
assembly-level tweaking. Thanks to Bernie Ryan.
- The Interpreter Source Code now includes an overview document describing how the
interpreter works.
- In the Complete Edition, bind.bat and bindw.bat now use exw to run the binder/shrouder.
This avoids problems with long filenames on some systems. A console window will appear
while the binder/shrouder is running. Thanks to "void", Bruce Axtens, and
others.
- bug fix : Due to a bug in the WATCOM 10.6 C library,
the ex and exw interpreters, and code translated to C and compiled by Watcom, might get
the wrong result from Euphoria's where() function when the file was opened in append mode,
and the file pointer was in the uncommitted (not written to disk yet) portion of the file.
The bug has been worked around by having Euphoria flush() the file in this particular
case, before calling the Watcom routine. Thanks to Bob Elia.
- bug fix : A bug introduced in the binder for 2.3
beta, might cause a function call on the last line of a program to be ignored. Thanks to
Wolfgang Fritz.
- bug fix : Several Euphoria files in the WIN32+DOS32
distribution had Linux-style line terminators (\n only). This made them hard to view using
NotePad and some other editors. Thanks to Pete Lomax.
- bug fix : If "with type_check" was turned
on, ed.ex would get a type_check failure when the Esc key was pressed. Thanks to Kenneth
Orr.
Version 2.3 Beta Release January 15,
2002:
This release updates the Euphoria Interpreter, the Euphoria To C Translator, and the
Interpreter Source Code product, for all platforms.
- You can now override a Euphoria built-in routine with your own variable or namespace
identifier of the same name. Previously this was only allowed for user-defined routines.
Besides giving programmers more freedom, it will allow RDS to add new built-in routines in
the future without breaking existing code.
- The warning about having multiple global symbols with the same name in different source
files has been removed. It was felt to be unnecessary since you'll be asked to supply a
namespace identifier if you actually make an ambiguous reference to a global symbol.
- You can now have a trailing \ (or Linux /) on the end of all directory names in EUINC,
and you can have blanks in the directory name.
- To eliminate confusion, the binder/shrouder will now delete the output file if a fatal
error occurs during the bind or shroud.
- Numerous improvements and corrections were made to the documentation. Thanks to Igor
Kachan.
- Old, pre-ANSI function definitions in the interpreter source code, have been updated to
ANSI-style, which is more compatible with C++.
- bug fix : With DJGPP C, when compiling code produced
by the Translator, or compiling the Interpreter source code, there was a memory allocation
bug that could waste a bit of time, or, in rare cases, cause a crash.
- bug fix : On Windows, using the Interpreter, or a
Translated program, you were sometimes required to hit Enter twice to exit from a console
window. Thanks to Tone Skoda.
- bug fix: The Euphoria dir() function, as implemented
for Lcc or Borland, did not handle directories properly when they had extra attributes
set, such as READ_ONLY. Thanks to Euman, who encountered the problem, and then showed how
to fix the Interpreter source code for dir().
- bug fix: You can now declare a namespace identifier
with the same name as a built-in function, without causing a lot of errors. Thanks to
Martin Stachon (although he recommended a different solution).
- bug fix - Binder: Support for the new EUINC
environment variable has now been added to the binder. Thanks to Ross Boyd.
- bug fix - Binder: Appending resource files to a
bound .exe didn't work correctly when bind -clear was used. Thanks to Wolfgang Fritz.
- bug fix - Binder: When using the binder
interactively, you would get a "variable not initialized" error when trying to
substitute a different Windows icon. Thanks to Tony Steward.
- bug fix - Binder: In some cases the keyword
"constant" would be dropped from the shrouded output, when the previous line of
input had a constant declaration ending in ']'. Thanks to Ross Boyd.
- bug fix - Binder: When a general expression, (not
just a string in quotes), was used as the argument to routine_id(), local routines that
were potentially the target of that expression, might have their names changed (unless
-clear was used), thus causing routine_id() to return -1 at run-time. Global routines were
ok.
- bug fix - Binder: The binder/shrouder kept going
even though an include file was missing. Thanks to Ross Boyd.
- bug fix - Linux Binder: The Linux search path bug
for bound executables, supposedly fixed by the 2.3 alpha release, wasn't fixed properly.
Fixed now. Thanks to Ken Rhodes.
- bug fix - Linux Binder: bindu -clear and shroud
-clear with a file containing DOS/Windows-style \r\n line terminators gave you errors
"illegal character" when your shrouded program was run, and "not bound
correctly" when your bound file was run.
- bug fix - Interpreter Source: The link command for
building the DOS interpreter with WATCOM C, listed a non-existent .obj file.
Version 2.3 Alpha Release November 30,
2001:
This release updates the Euphoria Interpreter for WIN32, DOS32 and Linux. It also
updates the Euphoria To C Translator for all platforms, and it introduces a new product -
the Euphoria Interpreter Source Code.
Version 2.2 Official Release for
WIN32+DOS32 January 14, 2000:
- Better error messages are now issued from the interpreter, and from the bind program,
for some typical errors that users can make when binding a program.
- The documentation has been improved in a few places.
- The window.exw demo program shows how to load the Euphoria icon contained in
exw.exe.
- Language War uses Jiri Babor's improved version of putsxy.e.
Version 2.2 Beta Release for WIN32+DOS32
December 23, 1999:
Most of the new library routines developed for Euphoria 2.2 on Linux, have now been
ported to WIN32 and DOS32. These are: sleep(), chdir(), flush(), lock_file(),
unlock_file(), crash_file(), get_screen_char() and put_screen_char(). For a description of
these routines refer to the Linux release notes below, or LIBRARY.HTM.
Some cross-platform bug fixes and other miscellaneous improvements were made during the
Linux port. These bug fixes and improvements have now been ported back to WIN32+DOS32. See
the Linux release notes (below).
In addition, the following improvements have been made specifically for WIN32 and
DOS32:
- exw.exe now contains a Euphoria icon that is displayed automatically by Windows.
The icon was contributed by Gary Dumer. Registered users may change this icon when they
bind a program.
- exw.exe is now a compressed executable of just 73K (or so). It's compressed using
the UPX compression tool for .exe files.
- ex.exe has been updated with the latest release of the CauseWay DOS extender. A
problem where CauseWay would sometimes limit you to 64Mb of memory under some DOS
configurations has been eliminated, and a few other minor bugs were fixed.
- bug fix: The error traceback could sometimes crash
or be misprinted when a type_check failure occurred. It could only happen when 1 was added
to an expression, and the non-integer result of the expression was assigned to a variable
declared as integer.
- bug fix: If text_rows() was called as the first
routine needing a WIN32 console window, Euphoria would fail to set the new number of lines
of text on the console.
Version 2.2 Official Release for Linux
November 22, 1999:
- All platforms: bug fix: If a Euphoria routine called
itself recursively from inside a for-loop, and at one level of recursion the for-loop
counted up to an upper limit, and at another level of recursion the for-loop
counted down to a lower limit, the for-loop would probably malfunction at one of
the levels. Thanks to Delroy Gayle.
- The documentation was improved in many places, especially with respect to the Linux
platform.
Version 2.2 beta-test release for
Linux October 22, 1999:
Most of these features and bug fixes will also be made available in Version 2.2 for WIN32 + DOS32.
- platform() has been moved from misc.e into exu to
eliminate the function call overhead. platform() now takes zero time to compute. The
compiler simply plugs in the appropriate constant value.
- lock_file() and unlock_file()
have been added to allow multiple processes to share access to files. This can be
important in CGI programming and other areas.
- flush() will force the contents of the memory buffer
out to a file or device.
- chdir() will change to a new current directory and
let you know if it was successful.
- sleep() will suspend execution of your program for a
number of seconds, and let the operating system schedule another process.
- put_screen_char() will write a character and its
attributes (colors etc.) to the screen.
- get_screen_char() will read a character and its
attributes from the screen.
- save_text_image() now works on Linux (as well as
DOS32). It copies a rectangular text image from the screen.
- display_text_image() now works under Linux (as well
as DOS32). It writes a rectangular text image to the screen.
- The "short-circuit" warning now gives the filename and line number of the
possibly short-circuited call. Minor clarifications were made in some other error messages
as well.
- Minor improvements were made to ed and search.
- A portability problem in how2reg.ex was fixed.
- exu is compressed better. It's actually a bit smaller now, although functionality
has been added to it.
Version 2.2 alpha-test release for Linux
August 24, 1999:
Many of these features and bug fixes will also be made available in Version 2.2 for WIN32 + DOS32.
- The documentation has been brought up-to-date to include Linux-specific
information for library routines and Euphoria in general.
- There is now a Complete Edition for Linux, including
binding and shrouding.
See register.htm.
- There is now text mode mouse support using get_mouse(). You must have GPM server running. It
works in a text console or an xterm window.
- Linux: define_c_var(name)
will return the address of a global C variable in a shared library.
- It was confirmed that you can call Euphoria routines from Linux
C routines using exactly the same mechanism as in WIN32
Euphoria. See euphoria/demo/linux.
- An example of creating your own shared library routines and calling them from Euphoria
was added. See euphoria/demo/linux.
- All platforms: crash_file(file_name) will cause
diagnostic messages to be written to file_name instead of ex.err.
You can use crash_file("/dev/null") to get
diagnostics on screen but not in a file.
crash_file("") means "no
diagnostics" (to screen or ex.err).
- Trace mode in xterm now detects the F1/F2
keys.
- time() now reports real "wall-clock" time,
not CPU time.
- search, guru and
cdguru now place their output in your $HOME directory
instead of the current directory.
- #! is now restricted to just the first line of a file.
- All platforms: In ed, the Esc n, Esc
d, Esc f and Esc r commands will immediately redisplay your last choice.
You can press up-arrow/down-arrow to see other choices, or clear the choice. If you
start typing without editing, it will clear the choice and take your new input.
- free_console() will set the terminal parameters back
to normal. Normally, when running a Euphoria program the parameters are set the way that curses
wants them and they are set back to normal when the program terminates. If your program
needs to terminate in a strange way (other than calling abort()),
free_console() should be called first.
- bug fix: get() now
considers '\r' to be a whitespace character. This is important when reading DOS files.
- All platforms: bug fix: It was not immediately
issuing a type_check failure when 1 was added to an
integer variable that was set to the maximum value for an integer (1.07 billion). Thanks
to Jeff Fielding.
- All platforms: bug fix: It was not always detecting
an improperly-formed exponent on a floating-point number. Thanks to Lionel Wong.
- All platforms: The performance of the storage allocator has been improved in
certain cases. A bug that could cause the interpreter to crash when you are almost out of
memory has been fixed.
Version 2.2 pre-alpha #4 for Linux July
15, 1999:
- You can call C routines in Linux shared libraries (.so
files). See euphoria/demo/linux/callc.exu for some
examples.
- If your program does not output anything to the xterm window, exu will not issue the "Press Enter" prompt.
- All platforms: ed now lets you recall previous
top-line command text using up-arrow and down-arrow, similar to doskey in
DOS and the shell history in Linux. This works with any strings that you type for Esc n
(new file), Esc d (Linux command), Esc f (find string) or Esc r
(replace string). In addition, you can now use arrow keys, Home, End,
Delete etc. to edit strings before you press Enter.
Version 2.2 pre-alpha #3 for Linux July
8, 1999:
- In an xterm window, exu will prompt you to
hit Enter before it exits. Without this, xterm restores the screen so fast
that you don't see any output or error messages.
- An internal coding change was made to Euphoria's rand()
function. (The algorithm has not changed.) Hopefully this will allow rand()
to work on all distributions of Linux. Please let us
know if rand() still fails.
- ed: The Esc h command will display the
Euphoria help files. This was broken in pre-alpha#2.
- In an xterm window, Euphoria's video_config()
now reports the correct number of lines and columns - this helps ed
to work much better. ed will work with the initial
size of window in effect when ed starts up.
- ed: F1, F2, F3, F4, Home,
End, and the Delete key work now in xterm (under Red Hat 5.2 at
least). The other F-keys were already working. PageUp/PageDown and some other keys
still don't work - feel free to add your own alternate keys.
- exu is now even smaller - just 82K.
Version 2.2 pre-alpha #2 for Linux July
6, 1999:
- The ncurses library has been statically linked into exu.
- exu is now a compressed executable (97K).
- bug fix: ed can now
edit files with upper case letters in the name.
- The fraction of a second delay when you press the Esc key in ed has been removed.
- The correct address for subscribing to the Euphoria mailing list is in web.htm (the old address doesn't work anymore).
Version 2.2 pre-alpha #1 for Linux July
1, 1999:
- The first version of Euphoria for Linux was
released.
Version 2.1 Official Release for WIN32 +
DOS32 March 29, 1999:
- Updates to the trace screen have been optimized.
Unnecessary refreshes of the source code, and the variables on the trace screen, have been
eliminated. When a refresh is necessary, it is now slightly faster. This makes a
noticeable difference in exw.exe, and also in ex.exe in pixel-graphics modes.
For ex.exe in text modes,
it reduces screen flicker slightly.
- The install program no longer requires that your
PATH be less than 128 characters. It will simply warn you if it isn't. Newer versions of
DOS allow for a longer PATH. Thanks to Steve Adams.
- An extra error check was added to unregister_block()
in safe.e. Thanks to David Guy.
Version 2.1 beta-test release March 5,
1999:
- The rest of the files in the euphoria\doc directory
have now been converted to HTML. Every .doc file in the doc
directory now has a corresponding .htm file in the euphoria\html
directory. Many improvements and clarifications were made to the documentation.
- You will now be warned when you have code that comes immediately after an exit, return or abort() statement. This code can never be executed.
Suggested by Gabriel Boehme.
- safe.e no longer includes graphics.e.
This eliminates possible naming conflicts when safe.e
is substituted for machine.e.
- Using code supplied by David Guy, safe.e will now
let you add or remove externally-allocated blocks of memory on the "safe address
list". See the new library routines: register_block() and unregister_block().
- message_box() now uses the handle of the active
window rather than NULL. This forces the user to reply to your message before he can
continue to interact with your program. He won't be prevented from interacting with other
programs. Thanks to Austin C.
- get() and value()
have been sped up by a further 5% thanks to Gabriel Boehme.
- exw.exe has been made less likely to crash
mysteriously when attacked by a virus.
- sanity.ex now checks your installation of Euphoria.
You'll be warned if your PATH or EUDIR variables are not set, or your ex.exe, exw.exe, pdex.exe, or pdexw.exe
files have been corrupted or not installed correctly in euphoria\bin.
- The security of bound and scrambled
programs has been tightened some more. Thanks to Rusty Davis.
- To save space in euphor21.zip, the install
program now generates the HTML and DOC files from a common source, using Junko
Miura's documentation generator. In the process, the
generator is deleted, but you can download it from the RDS site.
- When a type_check failure occurs you'll be warned if
the type erroneously returned a sequence for it's "true/false" result.
Previously, a sequence result was simply reported as a type_check failure. Suggested by
Ralf Nieuwenhuijsen.
- The code for demo\win32\winwire.exw was cleaned up
considerably.
- The install program will warn you to change your autoexec.bat
file when you install a new release of Euphoria onto a different drive.
Version 2.1 alpha-test release January
15, 1999:
- We've made a number of changes to the packaging, pricing, and registration incentives
for the Euphoria product:
- The Dual-Platform (DOS32+WIN32) package, formerly $53 has been reduced to $39 U.S.,
effective immediately.
- The Single-Platform (DOS32-only) package, formerly $32, has been discontinued.
- The printed manual has been discontinued. Instead, there is now an official HTML version
of the manual, included with the Public Domain .zip file.
- All useful 3rd-party include files, such as Win32Lib.ew and many others, will be
"stamped" by RDS with a code number that makes them free,
just like the files in euphoria\include. They will not
add to your statement count, provided you do not significantly modify them. This will also
allow 3rd-party developers to get better diagnostic information from their users.
- Binding, shrouding
and profiling will now be part of the Complete Edition
only. These are features that beginners do not require, but serious users might find
valuable.
- Short-form assignment operators += -= *=
/= &= have been added. For example, instead of saying:
count = count + 1
You can now say:
count += 1
Instead of saying:
matrix[row][column] = matrix[row][column] * 5.0
You can say:
matrix[row][column] *= 5.0
Instead of saying:
test_scores[start..finish] = test_scores[start..finish] / 100
You can say:
test_scores[start..finish] /= 100
See refman.htm
for the details.
- Euphoria now uses "short-circuit" evaluation of and
and or expressions in if/elsif/while
conditions. e.g. in an and condition:
if A and B then ...
the interpreter will skip the evaluation of expression B whenever expression A is 0
(false), since it knows that the overall result must be false. In an or
condition:
while A or B do ...
the interpreter will skip the evaluation of expression B whenever expression A is
non-zero (true), since it knows that the overall result must be true.
Euphoria code written prior to version 2.1 may no longer work correctly if expression B
contains a function with side-effects such as setting a global variable,
doing I/O etc. In practice this kind of code is very rare, but just in case, a warning
will now be issued if a function with side-effects might be short-circuited.
By skipping the evaluation of B, short-circuit evaluation is typically faster, and will
allow you to write statements such as:
if atom(x) or length(x)=1 then ...
that would generate an error on older versions of Euphoria whenever x was an atom, since length() is not
defined for atoms.
See refman.htm
for the details.
- Several new routines were added.
Built-in to ex.exe/exw.exe:
|
|
|
|
|
profile() |
- |
turns profiling on/off so you can focus
your profile and profile_time
runs on particular events within your program. |
|
system_exec() |
- |
gives you the exit code from calling a .exe or .com file, or another
Euphoria program. |
|
equal() |
- |
compares any 2 Euphoria objects for equality. equivalent to: compare(a,b)
= 0 but more readable. |
Added to various include files:
|
|
|
|
|
walk_dir() |
- |
recursively goes through a directory and subdirectories, calling a routine that you
supply. |
|
reverse() |
- |
returns a sequence in reverse order. |
|
sprint() |
- |
returns the string representation of any Euphoria object. |
|
arcsin() |
- |
inverse trig function. |
|
arccos() |
- |
inverse trig function. |
|
get_bytes() |
- |
returns the next n bytes from a file. |
|
prompt_number() |
- |
prompts the user to enter a number. |
|
prompt_string() |
- |
prompts the user to enter a string. |
|
instance() |
- |
WIN32: returns the instance handle of the program. |
|
PI |
- |
the constant PI - 3.14159... was added to misc.e. |
See library.htm for the
details.
- The main Euphoria documentation can now be viewed locally with a Web browser. The
plain-text files refman.doc and library.doc
are still available in the doc subdirectory, but we
now have refman.htm and library.htm
in the new html subdirectory. We have developed a tool
(written in Euphoria) that lets us easily maintain both an up-to-date HTML version, and an
up-to-date plain-text version of refman and library.
The documentation has also been clarified and
expanded in many places.
- WIN32: you can create an unlimited
number of Euphoria call-back routines, as long as each routine is a function with 0 to 8
parameters. See platform.htm.
In version 2.0 you could only have one call-back routine and it had to have exactly 4
parameters.
- The xor keyword has been added to complement: and/or/not and xor_bits()
e.g.
if a xor b then...
xor works on sequences too. It's similar to or.
- The dir(path) library routine now officially
supports the use of wildcards * and ? in the path that you supply. This
feature was always available, but wasn't documented until now. e.g.
info = dir("mydata\\*.d?t")
- optimization: Subroutine call+return overhead was
reduced by an average of 30%. The speed-up occurs for all normal function/procedure/type
calls, user-defined type-checks, call_proc()/call_func()
calls using a routine id, and Windows call-backs. Only
recursive calls cost the same as before. Programs with a reasonably-high frequency of
calls can easily be 10% faster overall because of this.
- optimization: Branch straightening
has been implemented. The compiler will optimize branches in the internal code such that a
branch from A->B where location B contains a branch to location C, will be optimized to
a direct branch from A->C. Even something like A->B->C->D can be straightened
to A->D. This often occurs in while-loops that contain if-statements.
- optimization: In many cases, variable initialization
checks are now replaced by "no-ops" after the first check is performed. Euphoria
was already optimizing out many checks at compile-time.
- optimization: get()
and value() are now much faster in most cases thanks
to Jiri Babor and some further optimizations by RDS. The new v2.1 ex.exe
with the new v2.1 get.e is:
1.45x faster reading a sequence of f.p. numbers from a file and
2.25x faster when reading a sequence of integers from a file.
- optimization: power(x,2)
is converted internally to x*x which is faster in all cases, especially when x is a large
integer or a f.p. number.
- optimization: Thanks to Jiri Babor, int_to_bits() is at least 15% faster in most cases.
- optimization: Plotting a long sequence of pixels in
16-color graphics modes is about 3% faster.
- optimization: draw_line()
has been sped up by a few percent.
- Language War has had a major face-lift. It now runs
in pixel-graphics mode 18 (640 x 480 x 16 colors)
instead of text mode. It also has fine-grain parallelism, i.e. virtually anything can
happen in parallel with anything else. Multiple torpedos, phasors etc can be drawn on the
screen simultaneously, while ships are moving, commands are being entered, things are
exploding etc. Even the timing needed for the PC speaker sound effects is handled by the task
scheduler. There are no time-delay
"busy" loops executed during the game. The galaxy scan now shows you a scaled
picture of the whole galaxy, rather than just a bunch of numbers.
- The default print format for atoms was changed from "%g" to "%.10g".
This format is used by print(), ?,
the trace facility, and ex.err
dumps. This allows large integers -9,999,999,999 to +9,999,999,999 to be printed as
integers, rather than as scientific notation. It also provides about 10 digits of accuracy
to be displayed on fractional numbers, rather than just 6. Art Adamson and others made it
clear that more digits should be displayed.
- The state of all with/without settings is saved upon
entering an included file, and restored at the end of the included file. An
included file can change the settings, but they will be restored at the end of the
included file. e.g. warnings might be turned off just within the included file (and any
files it includes). As a result some programs now display warnings where none were seen
before.
- Warnings are now displayed after your program
finishes execution, so they won't be erased by clear_screen(),
graphics_mode() etc. Some programs now show warnings where
none were seen before.
- The security of scrambled code and bound code has been improved thanks to ideas
contributed by Rusty Davis. When a bound program starts executing, a quick integrity check
will be made to detect any corruption or tampering. It's still ok to add data to the end
of a bound .exe file, as long as your last line is abort(x).
- The ed editor now lets you view and edit beyond
column 80.
- ed has a new command: Esc m (modifications).
It will show the differences between the original file on disk and the current edit
buffer. This can be very useful when you've forgotten what changes you've made, and you
are wondering if it's safe to save them.
- The trace window now provides an upper case Q
command which lets the program run to completion, ignoring any trace(1)
commands. Lower case q lets it run to the next trace(1).
- safe.e (debug version of machine.e)
has been enhanced. It will now automatically catch additional cases where data is
illegally written just before, or just after, the boundaries
of an allocated block of memory. This can be particularly useful in WIN32
where Windows might overwrite one of your under-sized blocks. Without a tool such as safe.e, this type of bug could take hours or even days to
track down.
- The euphoria\tutorial directory was created to hold
several small tutorial programs.
- The limit on the number of open files was raised to 25 from 15. Three of these files are
0,1,2: standard-input, standard-output and standard-error, so you can now have up to 22 of
your own files open simultaneously. (As far as we know, no one ever exceeded the old
limit, but it seemed wise to raise it.)
- When the user simply types ex or exw and is prompted for the name of the Euphoria .ex
or .exw file to run, command_line() will now be
updated to include the filename as the second command-line argument, just as if the user
had originally typed: ex filename. Thanks to Mathew Hounsell for suggesting this.
- mset.ex now saves pictures in .bmp format.
Previously it was using a non-standard, compressed format.
- lines.ex (lines.bat)
now reports non-blank/non-comment lines as well. This is not
the same as the "statement count" used by Euphoria for the diagnostic limit, but
it's usually within +/- 10%, assuming you write one statement per line.
- Numeric literals greater than 1e308 (roughly) are now set to +/- inf. They
used to cause a compile-time error.
Version 2.0 Official Release March 25,
1998:
- The install procedure has changed. The Euphoria .zip file now contains a large bundle.dat
file that contains over 100 files. This makes it easier for people to locate the important
files: readme.doc, install.bat,
etc. that they should look at before installing. The .zip file is also 35K smaller as a
result.
- shroud will warn you to use bind/bindw
if you try to create a shrouded source file with a name ending in ".exe".
Version 2.0 (beta) February 26, 1998:
Version 2.0 (alpha) November 5, 1997:
Highlights of Older Releases:
Version 1.5a June 13, 1997:
- Many operations and library routines were optimized.
- get_key() is 100x faster when there is no key in the
buffer.
- get_all_palette() is over 100x faster and this makes
save_screen() much faster.
- The following routines have now been built directly into ex.exe,
to avoid the overhead of calling machine_proc() or machine_func(): pixel(), get_pixel(), mem_set(), mem_copy().
- poke() of a long sequence into memory, other than
video memory, is 50% faster.
- pixel() is 4x faster in mode 19.
- get_pixel() is faster in all modes.
- display_image() is about 30% faster in most modes
and up to 4x faster in mode 19, because
pixel() is faster.
- All arithmetic and bitwise operations applied to sequences of integers are now 29%
faster.
- a & b (concatenation) is 15% faster in most
cases, and is dramatically faster in the case where you grow a very long sequence by
concatenating many small sequences onto it.
- getc() is 12% faster.
- match() is 8% faster in typical cases.
- append()/prepend() are 15% faster in many cases.
- find() of an integer within a sequence of integers
is 64% faster.
- Formation of a 2-element sequence {a,b} is 11% faster.
- Internal copying of a shared sequence when it can no longer be shared is 15% faster.
Version 1.5 March 21, 1997:
- The following library routines were added. They are described fully in library.htm.
- allow_break()
- check_break()
- mem_copy()
- mem_set()
- atom_to_float32()
- atom_to_float64()
- float32_to_atom()
- float64_to_atom()
- get_all_palette()
- save_bitmap()
- save_screen()
- arctan()
- and_bits()
- or_bits()
- xor_bits()
- not_bits()
- get_vector()
- set_vector()
- lock_memory()
- tick_rate()
- with profile_time (time profiling for DOS32) was
added.
Version 1.4b, October 1996:
- mset.ex has a more visible selector box on it's
grid. It has also been sped up.
- ed.ex now allows special characters greater than
ASCII 127 to be entered by pressing the Alt key and typing digits on the numeric
keypad.
Version 1.4a, July 1996:
- crash_message() library routine was added.
- Programs bound by registered users will now produce
run-time error diagnostics regardless of the size of the program.
- shroud.bat has a new option -full_keywords.
Version 1.4, May 1996:
- You can now convert any Euphoria program into a stand-alone
.exe file.
- The separate DOS4GW.EXE DOS extender file has been eliminated.
- Windows 95 long filename support.
- Support for DOS software interrupts.
- New utility programs: key.ex, where.ex,
ascii.ex, guru.ex.
- New demo program: dosint.ex.
- New library routines: set_rand(), use_vesa().
- You can peek or poke an entire sequence of bytes.
- Editor enhancements.
- Reduction in space overhead for sequences.
Version 1.3, June 1995:
- You can now edit multiple files using multiple edit windows.
- 20 new library routines were added.
- Graphics performance was greatly improved.
Version 1.2, March 1994:
- A problem that prevented Euphoria from running in a DOS prompt under Windows was
eliminated.
Version 1.1, January 1994:
- Several language features and demo programs were added.
Version 1.0, July 1993:
- Euphoria was first released after 3 years of research and development and 6 months of
Beta testing. Many of the ideas behind Euphoria came from Robert Craig's Master's Thesis
in Computer Science at the University of Toronto. That thesis was strongly influenced by
the work of John Backus on functional programming (FP) languages.
|