| 1 | Release History for pForth - a Portable ANS-like Forth written in ANSI 'C' |
| 2 | |
| 3 | Documentation for pForth at http://www.softsynth.com/pforth/ |
| 4 | |
| 5 | V28 - unreleased |
| 6 | - fixes for MinGW build |
| 7 | |
| 8 | V27 - 11/22/2010 |
| 9 | - Fixed REPOSITION-FILE FILE-SIZE and FILE-POSITION. |
| 10 | They used to use single precision offset. Now use double as specified. |
| 11 | - Delete object directories in Makefile clean. |
| 12 | - Fixed "Issue 4: Filehandle remains locked upon INCLUDE error". |
| 13 | http://code.google.com/p/pforth/issues/detail?id=4&can=1 |
| 14 | - Fixed scrambled HISTORY on 64-bit systems. Was using CELL+ but really needed 4 +. |
| 15 | - Fixed floating point input. Now accepts "1E" as 1.0. Was Issue #2. |
| 16 | - Fixed lots of warning and made code compatible with C89 and ANSI. Uses -pedantic. |
| 17 | - Use fseek and ftell on WIN32 instead of fseeko and ftello. |
| 18 | - Makefile is now more standard. Builds in same dir as Makefile. Uses CFLAGS etc. |
| 19 | - Add support for console IO with _WATCOMC_ |
| 20 | - Internal CStringToForth and ForthStringToC now take a destination size for safety. |
| 21 | - Run units tests for CStringToForth and ForthStringToC if PF_UNIT_TESTS is defined. |
| 22 | |
| 23 | V26 5/20/2010 |
| 24 | - 64-bit support for M* UM/MOD etc by Aleksej Saushev. Thanks Aleksej! |
| 25 | |
| 26 | V25 5/19/2010 |
| 27 | - Added 64-bit CELL support contributed by Aleksej Saushev. Thanks Aleksej! |
| 28 | - Added "-x c" to Makefile CCOPTS to prevent confusion with C++ |
| 29 | - Allow space after -d command line option. |
| 30 | - Restore normal tty mode if pForth dictionary loading fails. |
| 31 | |
| 32 | V24 2/20/09 |
| 33 | - Fixed Posix IO on Mac. ?TERMINAL was always returning true. |
| 34 | - ACCCEPT now emits a space at end of line before output. |
| 35 | - Fixed RESIZE because it was returning the wrong address. |
| 36 | |
| 37 | V23 8/4/2008 |
| 38 | - Removed -v option from mkdir in build/unix/Makefile. It was not supported on FreeBSD. |
| 39 | Thank you Alexsej Saushev for reporting this. |
| 40 | |
| 41 | V23 7/20/2008 |
| 42 | - Reorganized for Google Code project. |
| 43 | |
| 44 | V22 (unreleased) |
| 45 | - Added command line history and cursor control words. |
| 46 | - Sped up UM* and M* by a factor of 3. Thanks to Steve Green for suggested algorithm. |
| 47 | - Modified ACCEPT so that a line at the end of a file that does NOT have a line |
| 48 | terminator will now be processed. |
| 49 | - Use _getch(), _putch(), and _kbhit() so that KEY, EMIT and ?TERMINAL will work on PC. |
| 50 | - Fixed : foo { -- } 55 ; - Was entering local frame but not exiting. Now prints error. |
| 51 | - Redefined MAKE_ID to protect it from 16 bit ints |
| 52 | - John Providenza says "If you split local variables onto 2 lines, PForth crashes." Fixed. Also allow \ |
| 53 | - Fixed float evaluation in EVALUATE in "quit.fth". |
| 54 | - Flush register cache for ffColon and ffSemiColon to prevent stack warnings from ; |
| 55 | |
| 56 | V21 - 9/16/1998 |
| 57 | - Fixed some compiler warnings. |
| 58 | |
| 59 | V20 |
| 60 | - Expand PAD for ConvertNumberToText so "-1 binary .s" doesn't crash. |
| 61 | Thank you Michael Connor of Vancouver for reporting this bug. |
| 62 | |
| 63 | - Removed FDROP in REPRESENT to fix stack underflow after "0.0 F.". |
| 64 | Thank you Jim Rosenow of Minnesota for reporting this bug. |
| 65 | - Changed pfCharToLower to function to prevent macro expansion bugs under VXWORKS |
| 66 | Thank you Jim Rosenow of Minnesota for reporting this bug. |
| 67 | |
| 68 | - "0.0 F~" now checks actual binary encoding of floats. Before this it used to just |
| 69 | compare value which was incorrect. Now "0.0 -0.0 0.0 F~" returns FALSE. |
| 70 | |
| 71 | - Fixed definition of INPUT$ in tutorial. |
| 72 | Thank you Hampton Miller of California for reporting this bug. |
| 73 | |
| 74 | - Added support for producing a target dictionary with a different |
| 75 | Endian-ness than the host CPU. See PF_BIG_ENDIAN_DIC and PF_LITTLE_ENDIAN_DIC. |
| 76 | |
| 77 | - PForth kernel now comes up in a mode that uses BASE for numeric input when |
| 78 | started with "-i" option. It used to always consider numeric input as HEX. |
| 79 | Initial BASE is decimal. |
| 80 | |
| 81 | V19 4/1998 |
| 82 | |
| 83 | - Warn if local var name matches dictionary, : foo { count -- } ; |
| 84 | - TO -> and +-> now parse input stream. No longer use to-flag. |
| 85 | - TO -> and +-> now give error if used with non-immediate word. |
| 86 | - Added (FLITERAL) support to SEE. |
| 87 | - Aded TRACE facility for single step debugging of Forth words. |
| 88 | - Added stub for ?TERMINAL and KEY? for embedded systems. |
| 89 | - Added PF_NO_GLOBAL_INIT for no reliance on global initialization. |
| 90 | - Added PF_USER_FLOAT for customization of FP support. |
| 91 | - Added floating point to string conversion words (F.) (FS.) (FE.) |
| 92 | For example: : F. (F.) TYPE SPACE ; |
| 93 | - Reversed order that values are placed on return stack in 2>R |
| 94 | so that it matches ANS standard. 2>R is now same as SWAP >R >R |
| 95 | Thank you Leo Wong for reporting this bug. |
| 96 | |
| 97 | - Added PF_USER_INIT and PF_USER_TERM for user definable init and term calls. |
| 98 | |
| 99 | - FIXED memory leak in pfDoForth() |
| 100 | |
| 101 | V18 |
| 102 | - Make FILL a 'C' primitive. |
| 103 | - optimized locals with (1_LOCAL@) |
| 104 | - optimized inner interpreter by 15% |
| 105 | - fix tester.fth failures |
| 106 | - Added define for PF_KEY_ECHOS which turns off echo in ACCEPT if defined. |
| 107 | - Fixed MARKER. Was equivalent to ANEW instead of proper ANS definition. |
| 108 | - Fixed saving and restoring of TIB when nesting include files. |
| 109 | |
| 110 | V17 |
| 111 | - Fixed input of large floats. 0.7071234567 F. used to fail. |
| 112 | |
| 113 | V16 |
| 114 | * Define PF_USER_CUSTOM if you are defining your own custom |
| 115 | 'C' glue routines. This will ifndef the published example. |
| 116 | - Fixed warning in pf_cglue.c. |
| 117 | - Fixed SDAD in savedicd.fth. It used to generate bogus 'C' code |
| 118 | if called when (BASE != 10), as in HEX mode. |
| 119 | - Fixed address comparisons in forget.fth and private.fth for |
| 120 | addresses above 0x80000000. Must be unsigned. |
| 121 | - Call FREEZE at end of system.fth to initialize rfence. |
| 122 | - Fixed 0.0 F. which used to leave 0.0 on FP stack. |
| 123 | - Added FPICK ( n -- ) ( i*f -- i*f f[n] ) |
| 124 | - .S now prints hex numbers as unsigned. |
| 125 | - Fixed internal number to text conversion for unsigned nums. |
| 126 | |
| 127 | V15 - 2/15/97 |
| 128 | * If you use PF_USER_FILEIO, you must now define PF_STDIN and PF_STDOUT |
| 129 | among other additions. See "pf_io.h". |
| 130 | * COMPARE now matches ANS STRING word set! |
| 131 | - Added PF_USER_INC1 and PF_USER_INC2 for optional includes |
| 132 | and host customization. See "pf_all.h". |
| 133 | - Fixed more warnings. |
| 134 | - Fixed >NAME and WORDS for systems with high "negative" addresses. |
| 135 | - Added WORDS.LIKE utility. Enter: WORDS.LIKE EMIT |
| 136 | - Added stack check after every word in high level interpreter. |
| 137 | Enter QUIT to enter high level interpreter which uses this feature. |
| 138 | - THROW will no longer crash if not using high level interpreter. |
| 139 | - Isolated all host dependencies into "pf_unix.h", "pf_win32.h", |
| 140 | "pf_mac.h", etc. See "pf_all.h". |
| 141 | - Added tests for CORE EXT, STRINGS words sets. |
| 142 | - Added SEARCH |
| 143 | - Fixed WHILE and REPEAT for multiple WHILEs. |
| 144 | - Fixed .( ) for empty strings. |
| 145 | - Fixed FATAN2 which could not compile on some systems (Linux gcc). |
| 146 | |
| 147 | V14 - 12/23/96 |
| 148 | * pforth command now requires -d before dictionary name. |
| 149 | Eg. pforth -dcustom.dic test.fth |
| 150 | * PF_USER_* now need to be defined as include file names. |
| 151 | * PF_USER_CHARIO now requires different functions to be defined. |
| 152 | See "csrc/pf_io.h". |
| 153 | - Moved pfDoForth() from pf_main.c to pf_core.c to simplify |
| 154 | file with main(). |
| 155 | - Fix build with PF_NO_INIT |
| 156 | - Makefile now has target for embedded dictionary, "gmake pfemb". |
| 157 | |
| 158 | V13 - 12/15/96 |
| 159 | - Add "extern 'C' {" to pf_mem.h for C++ |
| 160 | - Separate PF_STATIC_DIC from PF_NO_FILEIO so that we can use a static |
| 161 | dictionary but also have file I/O. |
| 162 | - Added PF_USER_FILEIO, PF_USER_CHARIO, PF_USER_CLIB. |
| 163 | - INCLUDE now aborts if file not found. |
| 164 | - Add +-> which allows you to add to a local variable, like +! . |
| 165 | - VALUE now works properly as a self fetching constant. |
| 166 | - Add CODE-SIZE and HEADERS-SIZE which lets you resize |
| 167 | dictionary saved using SAVE-FORTH. |
| 168 | - Added FILE?. Enter "FILE? THEN" to see what files THEN is defined in. |
| 169 | - Fixed bug in local variables that caused problems if compilation |
| 170 | aborted in a word with local variables. |
| 171 | - Added SEE which "disassembles" Forth words. See "see.fth". |
| 172 | - Added PRIVATE{ which can be used to hide low level support |
| 173 | words. See "private.fth". |
| 174 | |
| 175 | V12 - 12/1/96 |
| 176 | - Advance pointers in pfCopyMemory() and pfSetMemory() |
| 177 | to fix PF_NO_CLIB build. |
| 178 | - Increase size of array for PF_NO_MALLOC |
| 179 | - Eliminate many warnings involving type casts and (const char *) |
| 180 | - Fix error recovery in dictionary creation. |
| 181 | - Conditionally eliminate some include files for embedded builds. |
| 182 | - Cleanup some test files. |
| 183 | |
| 184 | V11 - 11/14/96 |
| 185 | - Added support for AUTO.INIT and AUTO.TERM. These are called |
| 186 | automagically when the Forth starts and quits. |
| 187 | - Change all int to int32. |
| 188 | - Changed DO LOOP to ?DO LOOP in ENDCASE and LV.MATCH |
| 189 | to fix hang when zero local variables. |
| 190 | - Align long word members in :STRUCT to avoid bus errors. |
| 191 | |
| 192 | V10 - 3/21/96 |
| 193 | - Close nested source files when INCLUDE aborts. |
| 194 | - Add PF_NO_CLIB option to reduce OS dependencies. |
| 195 | - Add CREATE-FILE, fix R/W access mode for OPEN-FILE. |
| 196 | - Use PF_FLOAT instead of FLOAT to avoid DOS problem. |
| 197 | - Add PF_HOST_DOS for compilation control. |
| 198 | - Shorten all long file names to fit in the 8.3 format |
| 199 | required by some primitive operating systems. My |
| 200 | apologies to those with modern computers who suffer |
| 201 | as a result. ;-) |
| 202 | |
| 203 | V9 - 10/13/95 |
| 204 | - Cleaned up and documented for alpha release. |
| 205 | - Added EXISTS? |
| 206 | - compile floats.fth if F* exists |
| 207 | - got PF_NO_SHELL working |
| 208 | - added TURNKEY to build headerless dictionary apps |
| 209 | - improved release script and rlsMakefile |
| 210 | - added FS@ and FS! for FLPT structure members |
| 211 | |
| 212 | V8 - 5/1/95 |
| 213 | - Report line number and line dump when INCLUDE aborts |
| 214 | - Abort if stack depth changes in colon definition. Helps |
| 215 | detect unbalanced conditionals (IF without THEN). |
| 216 | - Print bytes added by include. Helps determine current file. |
| 217 | - Added RETURN-CODE which is returned to caller, eg. UNIX shell. |
| 218 | - Changed Header and Code sizes to 60000 and 150000 |
| 219 | - Added check for overflowing dictionary when creating secondaries. |
| 220 | |
| 221 | V8 - 5/1/95 |
| 222 | - Report line number and line dump when INCLUDE aborts |
| 223 | - Abort if stack depth changes in colon definition. Helps |
| 224 | detect unbalanced conditionals (IF without THEN). |
| 225 | - Print bytes added by include. Helps determine current file. |
| 226 | - Added RETURN-CODE which is returned to caller, eg. UNIX shell. |
| 227 | - Changed Header and Code sizes to 60000 and 150000 |
| 228 | - Added check for overflowing dictionary when creating secondaries. |
| 229 | |
| 230 | V7 - 4/12/95 |
| 231 | - Converted to 3DO Teamware environment |
| 232 | - Added conditional compiler [IF] [ELSE] [THEN], use like #if |
| 233 | - Fixed W->S B->S for positive values |
| 234 | - Fixed ALLOCATE FREE validation. Was failing on some 'C' compilers. |
| 235 | - Added FILE-SIZE |
| 236 | - Fixed ERASE, now fills with zero instead of BL |
| 237 | |
| 238 | V6 - 3/16/95 |
| 239 | - Added floating point |
| 240 | - Changed NUMBER? to return a numeric type |
| 241 | - Support double number entry, eg. 234. -> 234 0 |
| 242 | |
| 243 | V5 - 3/9/95 |
| 244 | - Added pfReportError() |
| 245 | - Fixed problem with NumPrimitives growing and breaking dictionaries |
| 246 | - Reduced size of saved dictionaries, 198K -> 28K in one instance |
| 247 | - Funnel all terminal I/O through ioKey() and ioEmit() |
| 248 | - Removed dependencies on printf() except for debugging |
| 249 | |
| 250 | V4 - 3/6/95 |
| 251 | - Added smart conditionals to allow IF THEN DO LOOP etc. |
| 252 | outside colon definitions. |
| 253 | - Fixed RSHIFT, made logical. |
| 254 | - Added ARSHIFT for arithmetic shift. |
| 255 | - Added proper M* |
| 256 | - Added <> U> U< |
| 257 | - Added FM/MOD SM/REM /MOD MOD */ */MOD |
| 258 | - Added +LOOP EVALUATE UNLOOP EXIT |
| 259 | - Everything passes "coretest.fth" except UM/MOD FIND and WORD |
| 260 | |
| 261 | V3 - 3/1/95 |
| 262 | - Added support for embedded systems: PF_NO_FILEIO |
| 263 | and PF_NO_MALLOC. |
| 264 | - Fixed bug in dictionary loader that treated HERE as name relative. |
| 265 | |
| 266 | V2 - 8/94 |
| 267 | - made improvements necessary for use with M2 Verilog testing |
| 268 | |
| 269 | V1 - 5/94 |
| 270 | - built pForth from various Forths including HMSL |
| 271 | |
| 272 | ---------------------------------------------------------- |
| 273 | |
| 274 | |
| 275 | Enjoy, |
| 276 | Phil Burk |