routine or constant name search

9.17 Version 2.5 Beta January 14, 2005

9.17.1 Improved Performance

  • The initial parse time (start-up time) of interpreted programs has been reduced, typically by 25% on newer machines, and 40% on older machines, when compared to 2.5 alpha. In the case of old machines running very large programs, the start-up time can be 65% to 90% less, especially when with trace or with profile are in effect.
  • Most of the optimizations were made to the Euphoria front-end source that's shared with the Public Domain source interpreter, so eu.ex also has reduced parse times.
  • A major speed improvement was made in opASSIGN_SUBS() in the PD source interpreter. This operation handles assignments to subscripted sequences, and is executed a lot. Thanks to Greg Haberek for showing the slowness.
  • Translator: In many more cases, the Translator now knows the type of all elements of a sequence. This is especially useful when the elements are known to be integers. Smaller and faster code is generated for accessing the elements, and freeing the sequence.
  • In most cases, the Interpreter and the Translator now evaluate sequence-formation {a, b, c, ...} expressions once at compile-time, instead of each time at run-time, when the elements are all constant integers (either hard-coded numbers or symbols declared as constant). This saves time, and also reduces code size for translated programs.
  • database.e: db_select_table() returns quickly if you happen to select the table that's already selected. This can save a lot of time in situations where it's not convenient for the application to keep track of which table is currently selected. Thanks to Derek Parnell.

9.17.2 Enhanced Features

  • The shrouder will now supply a default #! (shebang) line at the top of the .il file, if none was specified. Thanks to Kenneth Rhodes.
  • On Linux, the shrouder will give the .il file execute permission. Thanks to Kenneth Rhodes.
  • On Linux/FreeBSD the Binder no longer creates bound executable programs with a ".exe" extension. Now, no extension is used. This is compatible with the Translator, and more in keeping with the standard on Linux/FreeBSD systems. Thanks to Jerry Story.
  • database.e: Extra checks were added to some routines to give a more meaningful error message when no table has been selected yet. Thanks to Derek Parnell.
  • Several small improvements in the Source Code product and its documentation make it easier to compile using Open Watcom and other compilers. Thanks to Jean-Marc Duro.
  • The main source file is now closed right after the front-end finishes. This allows a program to edit or otherwise modify its own source.
  • The initial random seed value is now chosen more randomly on Windows. Thanks to Yuku Sugianto.

9.17.3 DOS/Windows Installation Program

  • The install program will set up ed.bat to run ed.ex with ex.exe on ME/98/95, and exwc.exe on NT/2000/XP.
  • The install program will not change any existing file associations for Euphoria file types. (If you install Euphoria in a new directory, you might have to change these yourself.) Thanks to Juergen Luethje and others.
  • The Start Menu links created by the install program were wrong: exw was incorrectly pointing to ecw.exe, and ex was incorrectly pointing to ec.exe. Thanks to Yuku Sugianto.
  • It's ok now to have a blank in the path of the installation directory: e.g. "C:\Program Files". Thanks to Rich.

9.17.4 Bug Fixes

  • bug fixed: When building a Linux/FreeBSD .so file from Euphoria code that contained call_proc() or call_func(), an undefined "__stdcall" symbol appeared in the C file by mistake. Thanks to Matt Lewis.
  • bug fixed: The opening message displayed by the Binder on Linux/FreeBSD and on Windows was wrong. Thanks to Kenneth Rhodes and Igor Kachan.
  • bug fixed: routine_id() was checking for symbols coming later in the code. This happened in the Interpreter only, and only at the top-level, not inside a routine.
    This fix requires .il files shrouded with 2.5 alpha to be reshrouded with 2.5 beta or later. Bound files are not a problem.
  • bug fixed: A complex expression on the left hand side of an assignment, involving nested use of $, could crash. Thanks to Andy Serpa.
  • bug fixed - Translator: A call to routine_id() would sometimes search past the end of a list and start reading garbage in memory. In most instances this did not cause a problem, but in some cases it could cause a crash. Thanks to Kenneth Rhodes.
  • bug fixed - Translator: In a rare situation, the 2.5 alpha Translator could crash while attempting to optimize some code.
  • bug fixed - Translator: In a rare situation, at the end of execution of a particular routine, the translated code would fail to free some space used for a temporary value. Thanks to Wolfgang Fritz.
  • bug fixed: After a compile error in exw you would have to hit Enter, then a message would say: "Press Enter...". (Things worked properly for run-time errors). Thanks to Tone Skoda.</li>
  • bug fixed: An incompatibility existed between the way that abort(1) was handled in the Translator vs the Interpreter. Thanks to Juergen Luethje.
  • bug fixed: save_text_image(), when run by exw or exwc, occasionally returned some garbage in the upper bits of the character attributes. Thanks to Brian Broker.
  • bug fixed: The CAPS lock key generated a key code when using ed with exwc. The key had the desired effect, but it caused ed to display a message at the top of the screen. ed will no longer display the message. Thanks Alex Caracatsanis.
  • bug fixed: routine_id("") would crash the Binder and Translator. Thanks to Antonio Alessi.
  • bug fixed: A line longer than 200 chars crashed the trace display. Thanks to Thomas Betterly.
  • bug fixed: Symbols declared as constant were not defined in the trace window. Thanks to Matthew Lewis.
  • bug fixed: printf() format strings were wrong in two error messages in execute.e &nbsp;Thanks to Derek Parnell.
  • bug fixed: The caret (arrow) symbol, displayed in compile-time error messages, was shifted one position to the right, when compared with version 2.4. This has been corrected. Thanks to Juergen Luethje.
  • bug fixed: For compatibility with the official Interpreter, routine id's now start at 0 instead of 1 in the PD source interpreter.

9.17.5 Documentation

  • A paragraph was added to "Scope" discussing how you can override predefined routines with your own variables and routines. Thanks to Mike.
  • A warning was added to open() about the use of CON and CON.*, and other file names that are reserved by DOS. Thanks to Igor Kachan.
  • The fact that programs are now fully parsed before being executed was explained better in the Reference Manual.
  • Obsolete uses of the phrase "Complete Edition" were removed from a few places in the documentation. Thanks to Juergen Luethje.
  • Various documents were fixed where miscellaneous 2.4 information has now become now obsolete.
  • The Reference Manual said that the limit on nested include files was 10 deep. It should have said 30 deep. Thanks to Darkvincentdude.
  • In the PD source interpreter, eu.ex, there was an error in the comments at the top. Thanks to Yuku Sugianto.
  • The fact that crash_message() is now only useful for run-time errors was made clear. Thanks to Juergen Luethje.
  • A bad HTML link to the WIN32 API .hlp file was fixed. Thanks to "Bro George".
  • Many other minor clarifications were made.