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