1User-visible changes between 0.7.2 and 0.7.3: 2Bug fixes 3 Backported protection against glibc math functions clobbering TOS 4 5User-visible changes between 0.7.1 and 0.7.2: 6Bug fixes 7 Fixed installdirs 8 9User-visible changes between 0.7.0 and 0.7.1: 10Bug fixes 11 amd64 gdb disassembler works with syntax change (autodetected) 12 workaround for gcc 4.6 and 4.7 problems (newline and superinstructions) 13Miscellaneous 14 changed repository from CVS to git 15 16User-visible changes between 0.6.2 and 0.7.0: 17 18Requirements: 19 At run-time requires libtool and gcc (for the libcc C interface) and 20 gdb (for the disassembler (SEE)) on some platforms. 21Installation: 22 support for DESTDIR, POST_INSTALL, INSTALL_SCRIPT 23 automatic performance tuning on building (--enable-force-reg unnecessary) 24 report performance and functionality problems at end of "make" 25 autogen.sh now exists 26License: 27 Changed to GPLv3 28Bug fixes 29 Now works with address-space randomization. 30 The single-step debugger works again in some engines. 31 Many others. 32Ports: 33 AMD64, ARM, IA-64 (Itanium): better performance 34 PPC, PPC64: disassembler and assembler 35 Gforth EC: R8C, 4stack, misc, 8086 work 36 MacOS X: better support 37Invocation: 38 New flags --ignore-async-signals, --vm-commit (default overcommit) 39 --print-sequences 40Forth 200x: 41 X:extension-query: produce true for all implemented extensions 42 X:required REQUIRED etc. (not new) 43 X:defined: [DEFINED] and [UNDEFINED] 44 X:parse-name: PARSE-NAME (new name) 45 X:deferred: deferred words (new: DEFER@ DEFER! ACTION-OF) 46 X:structures: +FIELD FIELD: FFIELD: CFIELD: etc. 47 X:ekeys: new: EKEY>FKEY K-SHIFT-MASK K-CTRL-MASK K-ALT-MASK K-F1...K-F12 48 X:fp-stack (not new) 49 X:number-prefixes (partially new, see below) 50Number prefixes: 51 0x is a hex prefix: 0xff and 0XfF now produces (decimal) 255 52 # is a decimal prefix: #10 now produces (decimal) 10 53 Signs after the number prefix are now accepted, e.g, #-50. 54 ' now only handles a single (x)char: 'ab is no longer accepted, 55 'a' now produces (decimal) 97 56Unicode support (currently supports only uniform encoding): 57 added xchars words for dealing with variable-width multi-byte characters 58 provide 8bit (ISO Latin 1) and UTF-8 support for xchars 59New words: 60 \C C-FUNCTION C-LIBRARY END-C-LIBRARY C-LIBRARY-NAME (libcc C interface) 61 LIB-ERROR (complements OPEN-LIB) 62 OUTFILE-EXECUTE INFILE-EXECUTE BASE-EXECUTE (limited change of global state) 63 16-bit and 32-bit memory acces: UW@ UL@ SW@ SL@ W! L! W@ L@ /W /L 64 NEXT-ARG SHIFT-ARGS (OS command-line argument processing) 65 NOTHROW (for backtrace control) 66 FTRUNC FMOD (undocumented) 67 SEE-CODE SEE-CODE-RANGE (show generated dynamic native code) 68Improvements/changes of existing words: 69 S\", .\" now support \l, \m, \z, and limits hex and octal character specs. 70 OPEN-FILE with W/O no longer creates or truncates files (no compat. file) 71 OPEN-LIB now understands ~ at the start, like OPEN-FILE. 72 TRY...ENDTRY changed significantly, compatibility files available (see docs). 73 The disassembler (DISCODE) can now use gdb to disassemble code 74 Uninitialized defered words now give a warning when executed 75 Division is floored (disable with "configure --enable-force-cdiv") 76 Gforth (not gforth-fast) reports division by zero and overflow on division 77 on all platforms. 78Newly documented words: 79 S>NUMBER? S>UNUMBER? 80 EKEY keypress names: K-LEFT K-RIGHT K-UP K-DOWN K-HOME K-END K-PRIOR 81 K-NEXT K-INSERT K-DELETE 82 CLEARSTACKS 83 FORM 84Environment variable GFORTHSYSTEMPREFIX (used by word SYSTEM and friends) 85C interface: 86 exported symbols now start with "gforth_" (for referencing them from C code) 87 libcc C function call interface (requires libtool and gcc at run-time) 88 alternative: undocumented libffi-based interface 89Libraries: 90 depth-changes.fs: report stack depth changes during interpretation 91 ans-report.fs now reports CfV extensions 92 fsl-util.4th: FSL support files (undocumented) 93 regexp.fs for regular expressions (undocumented) 94 complex.fs for complex numbers (undocumented) 95 fft.fs for Fast Fourier Transform (undocumented) 96 wf.fs, a Wiki implementation (undocumented) 97 httpd.fs, a web server (undocumented) 98 status.fs, show interpreter status in separate xterm (undocumented) 99 profile.fs for profiling (undocumented, incomplete) 100 endtry-iferror.fs, recover-endtry.fs to ease the TRY change transition 101 test/tester.fs: Now works with FP numbers (undocumented) 102 test/ttester.fs: Version of tester.fs with improved interface (T{...}T). 103 compat library: 104 compat/execute-parsing.fs 105Speed improvements: 106 automatic performance tuning on building 107 static stack caching (good speedup on PPC) 108 mixed-precision division is now faster 109 support for int128 types on AMD64 110 workarounds for gcc performance bugs (in particular, PR 15242) 111 branch target alignment (good speedup on Alpha). 112 113 114User-visible changes between 0.6.1 and 0.6.2: 115 116Bug fixes (in particular, gforth-0.6.2 compiles with gcc-3.3) 117New words: LATEST, LATESTXT (LASTXT deprecated) 118Operating environment: Added optional support for a C interface built 119 on the ffcall libraries (more portable and powerful than the old 120 one, but still not documented). To use it, the ffcall libraries 121 have to be installed before building Gforth (see INSTALL). 122Miscellaneous: Gforth-fast now uses static superinstructions (some 123 speedup on some platforms); generally this is transparent (apart 124 from the speedup), but there are lots of command-line options for 125 controlling the static superinstruction generation. 126 127 128User-visible changes between 0.6.0 and 0.6.1: 129 130Bug fixes (installation on big-endian machines sometimes did not work) 131 132 133User-visible changes between 0.5.0 and 0.6.0: 134 135Changes in behaviour: 136 137S": interpreted use now ALLOCATEs the string (they live until BYE). 138Long word names (512MB on 32-bit systems) are now supported (change to 139 the header format). 140New threaded code execution method: primitive-centric (allows the 141 following), hybrid direct/indirect threaded (easier portability), 142 with dynamic superinstructions (typical speedup on Athlon: factor 143 2). New engine gforth-itc for dealing with some potential 144 backwards-compatibility problems (see "Direct or Indirect Threaded?" 145 in the manual). 146 147Operating environment: 148 149Default dictionary size is now 4MB. 150Large file support on OSs that support them (i.e., files with more 151 than 2GB on 32-bit machines). 152Gforth can now deal well with broken pipes in most situations. 153vi tags files can be built with tags.fs (usage like etags.fs). 154gforth.el mostly rewritten. 155New image file format. 156 157New words: 158 159Keyboard input: EDIT-LINE K-PRIOR K-NEXT K-DELETE 160File input: SLURP-FILE SLURP-FID 161Programming tools: ID. .ID WORDLIST-WORDS SIMPLE-SEE 162Conditional execution: [DEFINED] [UNDEFINED] 163Defining Words: CONST-DOES> ]] 164Input stream: PARSE-WORD EXECUTE-PARSING EXECUTE-PARSING-FILE 165String comparison: STR= STR< STRING-PREFIX? 166String literals: S\" .\" \"-PARSE 167Floating point output: F.RDP F>STR-RDP F>BUF-RDP 168 169Miscellaneous: 170 171Generalized prims2x.fs into Vmgen (see README.vmgen etc.); used the 172 new capabilities in prims (e.g., automatic handling of the return 173 stack and instruction stream). 174 175 176User-visible changes between 0.4.0 and 0.5.0: 177 178Changes in behaviour: 179 180There are now two engines: the fast engine (gforth-fast) is at least 181 as fast as gforth in earlier releases; the debugging engine (gforth) 182 supports precise backtracing for signals (e.g., illegal memory 183 access), but is slower by a factor of 1-2. 184Block files now start at block 0 by default (instead of block 1). If 185 you have block files around, prepend 1024 bytes to convert them, or 186 do a "1 OFFSET !" to establish the old behaviour. 187Gforth now does not translate newlines to LFs on reading. Instead, 188 READ-LINE now interprets LF, CR, and CRLF as newlines. Newlines on 189 output are in the OSs favourite format. 190SEE now disassembles primitives (or hex-DUMPs the code if no 191 disassembler is available). 192>HEAD (aka >NAME) now returns 0 (instead of the nt of ???) on failure. 193Syntax of prim changed: stack effects are now surrounded by 194 parentheses, tabs are insignificant. 195 196Operating environment: 197 198Gforth now produces a backtrace when catching an exception. 199On platforms supporting the Unix 98 SA_SIGINFO semantics, you get more 200 precise error reports for SIGSEGV and SIGFPE (e.g., "stack 201 underflow" instead of "Invalid memory address"). 202Gforth now produces exit code 1 if there is an error (i.e., an 203 uncaught THROW) in batch processing. 204You can use "gforthmi --application ..." to build an image that 205 processes the whole command-line when invoked directly (instead of 206 through gforth -i). 207 208Ports: 209 210AIX. 21120% speedup on 604e under powerpc-unknown-linux-gnu, 21219%-29% speedup on Celeron with gcc-2.95. 213 214New words: 215 216Missing ANS Forth words: EKEY EKEY? EKEY>CHAR 217Timing words: CPUTIME UTIME 218Vector arithmetic: V* FAXPY 219FP comparison: F~ABS F~REL 220Deferred words: <IS> [IS] 221Nested number output: <<# #>> 222Exception handling: TRY RECOVER ENDTRY 223Directory handling: OPEN-DIR READ-DIR CLOSE-DIR FILENAME-MATCH 224Other: ]L PUSH-ORDER 225 226Miscellaneous: 227 228Significant extensions to the manual (added an introduction, among 229 other things), many of them due to a new team member: Neal Crook. 230Added assemblers and disassemblers for 386, Alpha, MIPS (thanks to 231 contributions by Andrew McKewan, Bernd Thallner, and Christian 232 Pirker). Contributions of assemblers and disassemblers for other 233 architectures are welcome. 234 235 236User-visible changes between 0.3.0 and 0.4.0: 237 238Operating environment: 239 240Path handling: "." at the start of the path represents the directory 241 the nearest enclosing file resides in (if there is none: the working 242 directory). "~+" indicates the working directory. The default path 243 now has "." in front. 244gforth and gforthmi is now more GNU standards compliant (wrt 245 command-line options). 246New command-line-option: --die-on-signal 247Errors are now directed to stderr. 248Stdout is now unbuffered, if it is a tty. 249User input device redirection (for filters) is now possible. 250 251Ports: 252 253Now runs on IRIX (and other MIPS-based systems without linker-flag -d). 254Direct threading now works on PowerPC (20% speedup on 604e). 255Better support for m68k (thanks to Andreas Schwab and Jorge Acereda). 256It is possible to create executables that contain the image (for 257 non-OS systems). 258 259Added a lot of embedded control (EC) stuff. Supported controllers and 260small CPUs are Siemens C16x, 8086, 6502, Mixed-Mode's FPGA MISC, Bernd Paysan's 2614stack processor. Not finished: ShBoom alias PSC1000, H8, AVR. 262 263New, changed, and removed words: 264 265Renamed F0 to FP0 (avoids unexpected behaviour in hex), added aliases 266 SP0, RP0, LP0 (recommended for future use) for S0, R0, L0. 267Renamed PARSE-WORD into SWORD (PARSE-WORD is used with the meaning of 268 NAME in OpenBoot and dpans6 A.6.2.2008) 269Added FPICK (suggested by Julian Noble). 270Added EXCEPTION. 271S" gforth" ENVIRONMENT? now produces the version-string. 272Changed representation of types in struct package, and correspondingly 273 changed names. 274 275Miscellaneous: 276 277Plain text documentation is now available in doc/gforth.txt. 278Documentation improvements. 279Wordlist structure changed. 280Added mini-oof. 281Reorganized files: added directories and reorganized many files into 282 them; renamed files into 8.3 format to work with completely broken 283 systems (but there are again some files that won't work there). 284Bug fixes. 285Various changes without log information only known as mega-patches. 286Cross compiler now also supports compilation only for undefined or forward 287referenced words. Plugins to support some native code generation 288(for PSC1000). 289More files in the compat library. 290 291 292 293User-visible changes between 0.2.1 and 0.3.0: 294 295Stack overflow detection by memory protection on most systems 296 (allocation with mmap). 297gforth.fi is now fully relocatable. 298fully relocatable images are now easier to create. 299added primitives K and UNDER+. 300Win32 support. 301Improved support for embedded controllers and other deprived environments. 302some bug fixes. 303added concept index; other documentation improvements. 304 305 306 307User-visible changes between 0.2.0 and 0.2.1: 308 309Bug fixes 310 311 312 313User-visible changes between 0.1beta and 0.2.0: 314 315Portability and Installation: 316 317Support architectures with buggy long longs (alpha-dec-osf). 318Better support for DOS and other non-Unix systems. 319Size changes through the command line are passed to the image (and 320saved with savesystem); the preamble specifies an interpreter and is 321propagated by save-system. 322 323Tools: 324 325Improved etags support. 326more.fs allows output paging. 327Added compat/ directory containing ANS implementations of Gforth features. 328Added tiny multitasker (tasker.fs). 329Added two alternatives for object-oriented programming: oof.fs, objects.fs. 330Added ans-report.fs (reports which words are used from which wordset). 331 332New words: 333 334Changed POPEN and PCLOSE to OPEN-PIPE and CLOSE-PIPE. 335Added FORM, ROWS, and COLS. 336added primitives EMIT-FILE, STDOUT, STDERR. 337Added TABLEs (case-sensitive wordlists). 338added POSTPONE,. 339Added the ability to combine arbitrary interpretation and compilation 340semantics (INTERPRET/COMPILE:); state-smart words were generally 341rewritten to use that mechanism. 342 343Changes to existing words: 344 345EMIT and TYPE now work through file words (and are redirectable). 346HEADER now stores the compilation wordlist in the header and REVEAL 347reveals into that wordlist. 348changed behaviour of SYSTEM (no longer returns wretval, but puts it in 349$?) added (SYSTEM) ( c_addr u -- wretval wior ). 350' and ['] now give an error for compile-only words. 351 352----- 353Copyright (C) 1995,1996,1997,1998,2000,2003,2006,2007,2008,2013 Free Software Foundation, Inc. 354 355This file is part of Gforth. 356 357Gforth is free software; you can redistribute it and/or 358modify it under the terms of the GNU General Public License 359as published by the Free Software Foundation, either version 3 360of the License, or (at your option) any later version. 361 362This program is distributed in the hope that it will be useful, 363but WITHOUT ANY WARRANTY; without even the implied warranty of 364MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.#See the 365GNU General Public License for more details. 366 367You should have received a copy of the GNU General Public License 368along with this program. If not, see http://www.gnu.org/licenses/. 369 370 371% Local Variables: 372% fill-prefix: " " 373