Homepage SourceForge Download Documentation -Overview -The PFE Manual old manual / (book) -ChangeLog -Authors -License (LGPL) -Wordsets / (book) -Functions .. (book) -Dp of ANS Forth -The 4thTutor -Forthprimer.pdf - Old Wordsets - Old Words List Forth Links * Forth Repository * Taygeta Compilation * TinyBoot FirmWare * FiCL, Free Forth * Research Vienna * Research Bournemouth * zForth WebRing Other Links * Tektronix/MPT * Forth Org. (FIG) * Forth Inc. * MPE Ltd. Forths * SF Win32Forth * PD Win32Forth * Neil Bawd
generated 2008-12-22
|
2008-12-21 guidod <guidod@gmx.de> * various: completely remove bin/pfe-config (conflict with pkgconfig pfe.pc) which in turn revealed a number of build bugs (mostly due to pkgconfig to prefer pfe-uninstalled.pc when it exists in parallel with pfe.pc) * Makefile.am: add "rpm" target for in-build-directory rpmbuild scheme * test/checkans.fs: fixing tests - need 1000 bytes buffer instead of 500 * pfe/term-lib.c (tparm): the tparm call should have all the nine extra parameters in its prototype (patch by Josh Grams) * pfe/core-ext.c: noname should store-csp otherwise it can make for "control structure mismatch" when the noname word contains some "does>" handler. (bug reported and fixed by Josh Grams) 2008-11-24 guidod <guidod@gmx.de> * pfe.spec - done some testing on the opensuse build service 2008-11-21 guidod <guidod@gmx.de> * pfe/misc-ext.c: double-free due to usage of fclose() of glic - it seems that the glibc does not yield EBADF for a closed file handle but it simply dumps. * bug was reported by Jusha Grams on using "bye" in forth script - however this is ignored in the current PFE anyway (you need to say "-q" on the commandline) 20008-10-08 guidod <guidod@gmx.de> * header-ext.c: move DEFER words to FORTH as specified in forth200x * header-ext.c: move SYNONYM to FORTH as specified in forth200x and move the ALIAS word from chainlist-ext to header-ext * term-ext.c: move ekeys to FORTH as specified in forth200x 2008-09-12 <david.n.williams@umich.edu> * updating dstrings-ext.c as follows... * Revised P4_PUSH_STR() to avoid a left/right evaluation order side effect in *--SSP assignment, because gcc 4.0.1 does it differently from earlier versions under Mac OS X Leopard. * Renamed, adjusted labels and pronunciations: old new MPLACE (M!) SM, M,S $S>-COPY $,S CAT $+ CAT" $+" CAT` $+` S-CAT S+ PARSE-CAT PARSE-S+ CAT$@ CAT$P@ * Deprecated with comments the changing of the count field from its default (unsigned long). * Revised concatenations so they do nothing on the empty string except drop it (in particular, they don't start a cat). * Revised DROP-$FRAME to nip the top frame from beneath other strings, thus removing the restriction that the string depth not be increased between $ARGS{...} and the terminating semicolon. * Added $EXCHANGE, whose code is a major factor in the new DROP-$FRAME. 2008-09-11 guidod <guidod@gmx.de> * pfe/environ-ext.c: there was a bug in the environment-query search such that it was unable to find any ENVIRONMENT word containing lowercase characters. This conflicts with forth200x implementation environment queries which are by definition lowercase. * pfe/header-ext.c: introduce p4_SHOW and FCode(p4_logmessage_RT) such that there may be declarations in ENVIRONMENT for the value-less forth200x/queries. * make up entries for all the forth200x X:queries - other than expected any query on them will show a notification logmessage pointing to the implemented version (which would be returned by our own values). * pfe/header-ext.c: make synonym PFA to default to itself - so if the NAME> on the target name does throw then the resulting word will yield a bad-synonym-throw on the next call. 2008-09-10 guidod <guidod@gmx.de> * pfe/fpnostack-ext.c + pfe/floating-ext.c: cleanup REPRESENT - only use the new code using C's sprintf("%e") to get the representation. * pfe/fpnostack-ext.c + pfe/floating-ext.c: use signbit(X) and fabs(X) to seperate sign and value of a floating point representation (this is needed to handle the different representations of "+0.0" and "-0.0") * pfe/floating-ext.c: use another implementation of REPRESENT that builds directly on the specifics of sprintf(2) "%e" value representation. * pfe/Makefile.am: install-exec-hook should use "ln -sf" to put renamed executables into $bindir - that allows reinstall (report from DNW) 2008-09-01 guidod <guidod@gmx.de> * pfe/pfe-master.odt - the *.dbk converted to *.odt (not yet packaged) * pfe/pfedoc/odtdocument.py - writing pfe-words.odt (not yet merged to master.odt) * .... and extend to make pfe-wordsets.odt (again, not yet merged to master.odt) 2008-08-31 guidod <guidod@gmx.de> * locals-ext: the p4_word_paren_local functionality would compile the code for enter_locals before saving away a locals name. This would conflict with "BL WORD COUNT (LOCAL)" where HERE is occupied with the current name buffer. Hence the name buffer was trashed and junk bytes saved as the local's name. * This was a report from David N. Williams and Anton Ertl based on discussions on comp.lang.forth about the questionable "{...}" locals definition syntax. Also it became obvious that "(LOCAL)" was immediate which it should not have been ever. This is correct as well and the anslocal.fs test works ok. * test/anslocal.4th add the test program that had revealed the problem 2008-05-25 guidod <guidod@gmx.de> * complex-ext: make actual compilation dependent on PFE_HAVE_ISINF detected (newly added) * prep 33.70 2008-05-12 guidod <guidod@gmx.de> * hpux cc fixes * add test64.ok for x86_64 variants * use "testlist:" target along with Makedist.mk for semi-automatic *.ok pickup * release 0.33.69 (V_33_69) * oops, introduced tests SKIPS = queryapp (does not work, again) 2008-05-11 guidod <guidod@gmx.de> * implement "./" local path resolution * swap diff order of test/Makefile.am * pfe/def-config.h: remove PFE_DECLARE_BLOCK/PFE_DECLARE_END macros the actual source files (cdecl-ext.c/signals-ext.c) define direct to { and } reason: solaris10 gcc 3.4.1 -std=c99 does not make an error but it still issues a "warning: ISO C90 forbids mixed declarations and code" * fix some of those warnigns in other files (via ___/_____) * pfe/option-set.c: static allocated_ only when USE_THREAD_BLOCK * test/*.ok - make all regression tests based on *.ok templates 2008-05-11 guidod <guidod@gmx.de> * solaris-10: MAKE=gmake CFLAGS="-lcurses --std=c99" sh configure | | It is invalid to compile an XPG3, XPG4, XPG4v2, or XPG5 application | using c99. The same is true for POSIX.1-1990, POSIX.2-1992, POSIX.1b, | and POSIX.1c applications. Likewise, it is invalid to compile an XPG6 | or a POSIX.1-2001 application with anything other than a c99 or later | compiler. Therefore, we force an error in both cases. | and therefore, -D_XOPEN_SOURCE=600 must be set (removed _XOPEN_SOURCE_EXTENDED) * in -std=c99 soliris10 build breaks with ../../pfe/../pfe/term-lib.c:1130: error: too few arguments to function `tparm' the reason: grep tparm.*char /usr/include/*.h /usr/include/term.h: *tparm(char *, long, long, long, long, long, long, long, long, long); also documented in solaris10 tparm char *tparm(char *str, long int p1, long int p2, long int p3, long int p4, long int p5, long int p6, long int p7, long int p8, long int p9); as well as in the opengroup Unix98 standard http://opengroup.org/onlinepubs/007908799/xcurses/tparm.html * in -std=c99 soliris10 removes strlcat from its headers if also some XOPEN flag has been defined - those Sun managers seem to be really mad these days. Try to help it out with -D__EXTENSIONS__. * os-setjmp.h: solaris10 defines setjmp as a macro but not sigsetjmp. * does not compile testmodules but the ./pfe parts are okay. * release 0.33.68 (V_33_38) 2008-05-10 guidod <guidod@gmx.de> * pfe/def-regs.h: fix p4RP unused message in sbr-arg-threading ... now all variants should compile without any warning message (yeah) * rename forth200x extensions from "EXTENSION:X" to "forth200x/extension" the lowercase-naming was intentional (documented in the standard) and the name should easily map to an external file such that an enviornment query S" x/deferred" ENVIRONMENT? can map to REQUIRED. * make &10 prefix obseletion warning dependent on REDEFINED_MSG as well, allows to clear out some quirks in the regression testing. 2008-05-10 guidod <guidod@gmx.de> * make p4_check_deprecated(xt) -> p4_check_deprecated(nfa) which allows again that a SYNONYM an have a deprecation before (the result of p4_name_from(nfa) yields the target xt and not the cfa of the nfa). * pfe/forth-83-ext.c: use DEPR-loader for "><" and ">MOVE<" since the message is a bit longer (not an exact synonyme available) 2008-05-06 * the bug ist that isatty(2) does not recognize it is being piped from "cat", so it does not only initialize the terminal but QUERY is going to be set on get_vkey which finally ends in a curses routine. * rebuild tests to use *.ok templates 2008-05-05 * add extension-query numbers for Forth200x proposals * add THROW codes as mandated by http://www.forth200x.org/throw-iors.html * add also SYNONYM:X althought it is just propososed (RfD). * add additional backslash-sequences as defined in ESCAPED-STRINGS:X, like \l = '\n' and '\m' = '\r\n' ('\n' is either '\n' or '\r\n'). and \z, \t ... especially \t seems to have been forgotten so far. * append the ESCAPED-STRINGS:X to ZCHAR-EXT wordset where S\" is defined. * make rpm shows that a *.py had been forgotten * the new test/*.ok files were not packaged * make rpm has a regression error... * prep 0.33.68 (not yet published) 2008-05-05 * implement DEFER@ DEFER! and ACTION-OF as specified in http://www.forth200x.org/deferred.html * during the implemention a bug in BEHAVIOR was found (an alias to DEFER@) that indicates that it had not been used before. Therefore it can be safely removed. * adding http://www.forth200x.org/deferred.fs but use a modified variant deferred-x.fs for regression testing * a bug was found in deferred-x regression - the p4_defer_RT was not working in sbr-threading as it was not using FX_USE_BODY_ADDR setup and FX_POP_BODY_ADDR IP-adjustment. * done regression across * release 0.33.67 2008-05-04 guidod <guidod@gmx.de> * introduce log.diff comparison for "make check" * switch to test/string.test.ok for a first example * adding http://www.forth200x.org/tests/fp-stack.fs ok * adding http://www.forth200x.org/tests/test-num-prefixes.fs * adding http://www.forth200x.org/tests/test-num-prefixes2.fs * introduced PREFIX_DECIMAL_OLD '&' and change PREFIX_DECIMAL '#' to match with forth200x number-prefixes proposal * adding http://www.forth200x.org/tests/number-prefixes.fs (modified) and updating the test-num-prefixes output templates * rename "+FIELD" to "+FIELD:" and make the old one a SYNONYM * deprecate "+FIELD" reserved by http://www.forth200x.org/structures.html * note: because of the overlap, forth200x structures can not be implemented at the moment - only a future version may pick it up. * adding K-INSERT and K-DELETE from forth200x.org/ekeys.html * rename K1 to K-F1 and S-K1 to K-SHIFT-F1 to be close to forth200x ekeys, the old names are provided as SYNONYMs (they are NOT deprecated) * adding EKEY>FKEY and K-SHIFT-MASK - the latter is only used to decode the K-SHIFT-F1 values to a K-F1 K-SHIFT-MASK OR value * rename REQUIRES to REQUIRE - the old is kept as a SYNONYM (not deprecated) that renaming conforms to http://www.forth200x.org/required.html * rename p4_required/p4_requires to p4_include_required/p4_include_require to make its relation p4_included more obvious in code. * adding http://www.forth200x.org/tests/parse-name.fs with SYNONYM PARSE-NAME PARSE-WORD * adding PARSE-NAME with the implementation of PARSE-WORD and adapt the test * rename X:FP-STACK to FP-STACK:X to be compatible with http://www.forth200x.org/extension-query.html - that proposal will not be used but application programmers shall be supported that want to test explicitly for a Forth200x extension. 2008-05-04 guidod <guidod@gmx.de> * remove old loader from dict-comp.c * requires to make p4_exception_string into a proper runtime-word that lives now in exception-ext. * kill forth-signal handling from exceptn.4th and move it to forth-signal.4th, as a consequence "make check" will now work without any errors. 2008-05-04 guidod <guidod@gmx.de> * the segfault at system-exit seems to be introduced by p4_name_from being called from outside a Forth VM context. Looking over the source it could not be pinpointed - probably hidden somewhere in another function. Instead, move out the deprecated/obsoleted checks to a seperate call of p4_check_deprecated(xt) and run in inside p4_interpret_find_word. This however makes it possible to write your own outer interpreter using FIND EXECUTE and COMPLE, that skips over the functionality - but such a thing seems to be improbable and deprecated/obsolete message will appear. * introduced (CHECK-DEPRECATED) to allow user-level code to take advantage of this PFE deprecation mechanism. * rename "(DEPRECATED" to "(DEPRECATED:" - it looks better. 2008-05-03 guidod <guidod@gmx.de> * improve logging - replace some usages of fprintf(stderr with P4_fail * introduced "(DEPRECATED word message)" along with dict-comp code. * map USING and USING-NEW to the new variant - simply try "USING nonexistingfile.blk" and see what it does. * oops: a segfault crept in (on BYE in normal forth). * bug: using PFE.execute does not work for words using BODY or CODE. The simplication of using a direct (*p4_to_code)() was wrong and absolutely not needed because p4_call maps to p4_sbr_call which is handling it correct. 2008-05-01 guidod <guidod@gmx.de> * fixing DOES> in sbr-threading: gcc 4.2.3 uses arg-register %eax even if it was allocated to a local variable. Copy the value early on and everything is ok. * use execution-references in code with PFX only 2008-05-01 guidod <guidod@gmx.de> * remove char signedness warnigns (in ZNAME-ITC only one is left (deliberately)) * p4_match goes to str/len on target string (resolves another signedness problem) 2008-05-01 guidod <guidod@gmx.de> * allow for -DPFE_WITH_ZNAME that will create word names as zero-terminated strings. * In the default mode [PFE_WITH_FFA] all name-pointers will be zstrings, therefore `needs zchar-ext ' dup >name dup zcount type` will yield 'dup' * In compatible mode [PFE_WITH_NO_FFA] a hybrid word header is created where the name-pointers point to a flag-field that will also have a count-value in the lower bits if the name-length is below 32. However in that mode each word is also terminated with an additional null byte - so NAME>STRING prefers ZCOUNT instead of the COUNT 31 AND. As the latter is possible some old code might get along with it while new code could [theoretically] take advantage of dictionary names of unlimited length. * does not only change header-sub and some macros - especially FIND and the lined name-completion needs to be fixed. In some cases we do switch to using a POCKET for storing intermediate values. Effectivly this limits the maximum word name size to POCKET_SIZE-1 -> by default that is 255 matching the maximum COUNT but it is still bigger than either 31 in compat-header-modes or 127 with FFA headers. 2008-04-30 guidod <guidod@gmx.de> * standardize on P4_NAMELEN/P4_NAMEPTR - avoid NFACNT ! 2008-04-25 guidod <guidod@gmx.de> * pfe/debug-ext.c (is_sbr_compile_call_to): * pfe/def-sbrcode.h: on PPC, expanding the macro twice will result in doubled labels so we work around that with redefining (a new macro) PFE_SBR_LABEL_(label) 2008-04-24 guidod <guidod@pc3> * pfe/floating-ext.c: mark X:FP-STACK (forth200x) 2008-04-23 _ <guidod@gmx.de> * add pfe/os-string.h to bin/pfe-exec.c to help with x86_64 2008-04-20 _ <guidod@gmx.de> * allow pfedoc/forthheader.py to run standalone producing a forthheaderxml document * allow pfedoc/forthwordset.py to run standalone producing a forthwordsetxml document * create pfedoc/forthmodule.py - if run standalone it produces a forthmodulexml text * modify Makefiles for "forthxml" and "forthxmls" targets creating those xml documents 2008-04-20 _ <guidod@gmx.de> * unless SBR-threading, show the recognized compiled words only as comment * tested on x86 ITC with a CODE word that calls the DUP execution 2008-04-20 _ <guidod@gmx.de> * switch back and forth between sbr/asm in decompiling * Copyright update to 2008 2008-04-20 _ <guidod@gmx.de> * bug report from DNW: multiline-comments do not work anymore. Caused by wrong returncode in core-sub p4_parse_word in the "empty:" case which should be "return 0" instead of "return 1". Introduced in pfe-0.33.63 and corrected for next release * release 0.33.66 2008-04-20 _ <guidod@gmx.de> * debug-ext sbr-decompiling can now recognize all compiled words which allows to make a normal decompiler in the future. 2008-04-19 _ <guidod@gmx.de> * debug-ext is now able to SEE-decompile sbr-threaded colon-words * while working on it, the assembler END-CODE was fixed to do the right thing - also the TOOLS-EXT ans ASSEMBLER-EXT words for CODE ;CODE END-CODE are similar now. 2008-04-19 _ <guidod@gmx.de> * import to Eclipse * fix m4 macro to enable pfe-uninstalled.sh in testmodules * reduce warning count in sbr-threading mode 2008-04-18 _ <guidod@gmx.de> * introduce FX_SP_ROOM/FX_SP_DROP in def-macro.h and pull down all the FX_xDROP/FX_xROOM macros to those base definitions. * release 0.33.65 2008-04-18 _ <guidod@gmx.de> * try sh configure --with-regs=2 --with-sbr-threading will yield a good result on x86 with GCC 4.1... this is built on a completely different implementation of the sbr RP-handling which is not done with inline-asm anymore but instead all the primitives with an RP-effect will compile the RP-effect machine code before or after the original subroutine. The subroutine does simply do the rest, i.e. without modifying the RP. * fixed automatic addition of -fno-builtin required for newer GCC * -momit-leaf-framepointer and --with-args make for nice and readable compiled primitive machine code. 2008-04-15 _ <guidod@gmx.de> * nuke -fomit-frame-pointer -DPFE_OMIT_FRAME_POINTER and delete all asm reference to %ebp on i386. It does fit well with modern code optimization and current GCC can not compile proper code when ebp is (ab)used for something different than a stackframe. 2008-04-07 * Krishna Myneni - update to fpnostack-ext adding both FLOATING-EXT and FLOATING-STACK environment query results. 2008-04-07 * Josh Grams - update exception-sub to print line-numbers starting at 1 (see also MISC-EXT SOURCE_LINE for the same) 2008-04-04 * had to disable X11 tests in pfe/configure.ac - on Ubuntu it would not only link libpfe to libX11 but upon Forth invokation it would open a new X11 terminal - and of course all 'check's failed. 2007-02-18 _ ref. <wdavison@users.sourceforge.net> * http://sourceforge.net/forum/forum.php?forum_id=665365 As of 2007-02-08, SourceForge.net Compile Farm service has been officially discontinued. 2007-02-16 _ <guidod@gmx.de> * finally implemented term-x11.c ... tetris is almost working with it * Enable at configure --with-x starts automatically in X-Window if DISPLAY found in `env` 2006-10-08 _<david.n.williams@umich.edu> 7Oct06 * In complex-ext.c: Fixed comments for doc autogeneration, removed superfluous _Bool, deprecated Z-ROT with P4_xOLD in favor of -ZROT, and informally tested ZLITERAL. * In dstrings-ext.c: Fixed comments for doc autogeneration, and added $GC-LOCK@ and $GC-LOCK!, with tests in dstrings-test.fs. 2006-10-05 _ <guidod@gmx.de> * CODE and ASSEMBLER have been given a generic implementation in ITC (traditional) model. 2006-09-26 _ <guidod@gmx.de> * change REFILL / NEXT-LINE to return P4_TRUE (-1) instead of +1. * introduce p4_bool_t / p4_cell_t in pfe/def-cells.h 2006-09-26 _ <guidod@gmx.de> * p4_preload_interpret does work now. You can have a look at the current definition with SEE (INTERPRET). That routine is being activated thru INTERPRET-COMPILED ON! - of course there is hardly any difference to be seen. To make it visual, I did overload the behavior on "undefined word" which does print "oops.." just before the 13 THROW. Look for that. * floating-ext does implant itself into (INTERPRET) - even that the actual implementation is verrrry hackish. * assembler-ext module aded - and tools-ext provides a basic set of words to fulfill the Forth-Standard requirements. (fixed some problems a bit later - tested only with "CODE") * krishna myneni (of kForth fame) had been porting the gforth x86 assembler - one might want to have a look at it: ftp://ccreweb.org/software/kforth/examples/asm-x86.4th ftp://ccreweb.org/software/kforth/examples/asm-x86-examples.4th 2006-09-25 _ <guidod@gmx.de> * add FX_SKIP_BRANCH * experimental compiled outer interpreter: see INTERPRET-FIND see INTERPRET-NUMBER : my-interpreter begin ." ok! " cr parse-word nip 0= if \ end of line refill 0= if exit then \ end of file parse-word nip 0= if exit then \ empty line then interpret-find interpret-number again ; ' my-interpreter interpret-execution ! interpret-compiled on! * hint1: toolbelt-ext knows a word NEXT-WORD with implicit REFILL * hint2: QUERY will only get a line from terminal, REFILL will do the same but also works on other SOURCEs (files, evaluate) 2006-09-22 _ <guidod@gmx.de> * complex-ext.c - integrating last version from David N. Williams: * Version 0.8.9 * 6Sep06 * Skipped version 0.8.8, to sync with complex-kahan.fs. * Removed I/, renamed (-I)* as -I*, and renamed minimal mixed ops, with P4_xOLD for old names. * Version 0.8.7 * 15Jan05 * Changed ZBOX to conserve signs for all cases, contrary to Kahan, p. 198, but in agreement with its use in ARG, p. 199. * Fixed bug in p4_carg(): x and y stack order reversed in ZBOX call when x or y is infinite. * 16Jan05 * Replaced in complex-ext.c: _extern double p4_cabs by _export double p4_cabs * Reordered and updated complex-ext.h. * 21Jan05 * Added optional calls to C99 elementary functions for comparison of results. * 25Jan05 * Reordered exception save in |Z|. * 30Jan05 * Found out that R2P1 and T2P1 were inverted! Our tests for |Z| were all perfect, and remain so after the fix! More motivation for a table driven test. * 31Jan05 * Understood a discrepancy with complex-kahan.fs as due to compiled x*x + y*y keeping doubles in registers enough to benefit from the G4/PPC guard bit. Did that with a special version of |Z|^2 and -ffloat-store. * We noticed sometime earlier, and confirmed today, that using the MacOS X complex functions in complex.h requires -lmx, whereas fenv.h does not, although it says it does. * 15Feb05 * Removed Z=0, etc. 2006-09-22 _ <guidod@gmx.de> * rename p4_if_execution to p4_q_branch_execution * rename p4_else_execution to p4_branch_execution * keep p4_if_execution and p4_else_execution - marked OBSOLETE * modify relevant smart-words to use p4_*branch_execution (if,else) * fix BRANCH / ?BRANCH in system-ext.c - they should be compiling! * fix AHEAD - it was defined as : AHEAD MARK> ORIG# ; but it should have been : AHEAD BRANCH MARK> ORIG# ; ever since * thanks to David N. Williams for tiptoeing me on this bug. The code portion had been marked as "fixme: isn't that incorrect ?" but it is until now that the fixme can be removed, finally. * all usages of FX(p4_ahead) had to be adapted - they were all wrong leaving the system in a nonfunctional state. Always use explicit "MARK> ORIG#" instead of the old "AHEAD". 2006-09-21 _ <guidod@gmx.de> * docs - skip over some man3 exports that would not be fine for a real `make install` in the system * `make` will also `make man1` now just like `make install` will automatically trigger `make install-man1` - this does not include `make man3` or `make install-man3` .. use `make it` to trigger `make all` and `make mans` * pfe.spec - fixup the build and install targets to ensure full packaging of `bin/lib`, `mans` and `docs`. Finally, and years after the last full release, pfe can be rebuild completely in a simple process on a standard (Linux) PC. 2006-09-20 _ <guidod@gmx.de> * doc-completed - the full sourceforge website can now be rebuild with a call to "make docs". You may install a local copy by using "make install-docs DESTDIR=$HOME/pfe". A single-stop upload to sourceforge can be achieved with "make install-sf". 2006-09-19 _ <guidod@gmx.de> * doc-chain generates a pfe-wordsets.html document now - note that some doc parts have a "(no description)" entry which should be fixed for the next release. Often it is "/*.." instead of "/**.." 2006-09-16 _ <guidod@gmx.de> * doc/pfedoc/*.py doc/makedocs.py - use "make docu" to build along the newest doc-build-chain. It's also the default target in the "doc" subdirectory - and it will be the only one in the future. 2006-08-14 _ <guidod@gmx.de> * pfe.spec - making over with rpmbuild --with-options * configure.ac - default --programm-suffix is "-forth" now * make-install will `ln -s pfe-forth pfe` now * rpm-post/postun will `ln -s pfe-$variant pfe` now with checking variants in forth/call/calls/fast/fastest * so finally a pfe rpm will only contain a single variant which will be a traditional ITC by default. You need to use rpmbuild --rebuild --with-call for a call-threaded variant * make-rpms will build pfe-forth-*.rpm and pfe-call-*.rpm that can be installed in parallel now. The new way for multibuilds. 2006-08-11 _ <guidod@gmx.de> * compilechecks - it seems that some new gcc does again break --with-sbr-theading model. It's a plain nuisiance and so I consider to drop the model. Since sbr-call-threading does not give an advantage over plain call-threading on modern superscalar architectures, it can be dropped as well leaving pfe on a pure portable level. That's the plan for the next generation of the Portable Forth Environment that will start off next. * release 33.61 2006-08-10 _ <guidod@gmx.de> * def-sbrcode.h/def-macro.h change all *((T)X)++ into new P4_xCOMMA that gets us rid of some warning messages about improper use of a typecasted item as an lvalue. Arrgh, bad new C99. * def-gcc.h - gcc attribute __malloc__ and _const_ was inappropriate on debian 3.0 for alpha with gcc 2.95.4 - this compiler does not allow __attribute__ syntax between function head and body. * term-lib.c:53 - #ifdef (unix && sun) is not enough - the newer solaris9 features "fixed" headers for putchar / tputs exports * doc/Makefile.am - bsd make calls for duplicate %.html rule in doc/-subdir which is really %.html : %.xml and %.html : %.htm. ...guess it does only understand traditional rules .htm.html: * stackhelp-ext.c - add cast to int for 64bit cells on alpha-cpu * WW x86-openbsd1 can not link a shared library for testmodule2 * WW x86-solaris1 fails to link remote but does while online(?!) * WW sparc-solaris1 says comple-ext.896 "isinf" is not declared. 2006-08-09 _ <guidod@gmx.de> * append makefile rules to allow automatic sf compilefarm testing * oops: bsd make does not understand $^ for module-dll rules. In fact we find UNIX make to only know ($@ $% $? $< $*). The $^ as all-source is known as $> to bsd make. Sun ccs make does not know either. We need to resort back to "$?" which is possible for the module-dll.c rules in pfe/ and testmodule*/ * http://www.opengroup.org/onlinepubs/009695399/utilities/make.html * let autogen.sh run "make autoreconf" - autoreconf is easier * term-lib.c: rename t_puts > c_tputs; reason netbsd: ../../pfe/term-lib.c:735: error: conflicting types for `t_puts' /usr/include/termcap.h:62: error: previous declaration of `t_puts' * complex-ext.c: #error no fenv.h seen on openbsd - modify to emit a gcc warning and continue with dummy functions. For the usual fmin, fmax, signbit we can approximate with inlines but all the overflow/underflow checking with fetestexcept is impossible here. * solaris: the compilefarm did have both /usr/local/bin/gcc and /opt/SUNWspro/bin/cc - but linking -lncurses will fail. It had mixed the library and headers from different locations with /usr/local/lib/libncurses from gcc and /usr/include/curses.h from sunwspro intended for /usr/lib/libcurses. Both sparc and x86 did show different error messages! Just be sure that the /usr/local/include/ncurses.h is being found by modifying INCLUDE 2006-08-08 _ <guidod@gmx.de> * cvs repository archive as pfe-33 on pfe.sourceforge.net * fix minor build issues and "signedness warnings" by gcc 4.1 2005-01-14 _ <guidod@gmx.de> * prepare x86_64 sbr-threading. It does not work due to the stack-segment being not executable (the first "exec" will segfault). However, we can enable registers R12..R15 for the --with-regs allocation. And remember that x86_64 ABI uses a register-based callframe for the first two args. Hooray. Downside: native call-layout is 16byte-aligned instead of the forthish 8byte (it's optional however, just runtime penalties), so omitting the frame-pointer push/pop is not that a good plan. 2005-01-13 _ <guidod@gmx.de> * ax_enable_builddir.m4 was updated to ensure that the *.tar.bz2 is copied as well - the earlier version made for a pre-version of the tarball to end up at the sourceforge download area. * update pfe/complex-ext.c with the latest DNW changes * redistribute pfe/complex-pfe.log to reflect the latest changes * engine-set ensures to mate each VM_LOAD with a CALLER_SAVE * cut down p4_interpret into p4_interpret_query + p4_interpret_loop to help us get rid of compiler bugs around. 2005-01-11 _ <guidod@gmx.de> * move sbr-snippets from def-regmacro to def-sbrcode and include it as a new header file * start creating sbr decompile support * add option-set/engine-set instead of main-sub includes * make FreeThread/FreeOptions to return a "char" whether a thread block does still exist. The value is usually ignored. * add PFE_HAS_TLS_SUPPORT to pfe/_config.h * use it in option-set to define static __thread marker when using gcc/C99 * introduce pfe/def-regth to move extern-declarations to a single header file - use the derived PFE_USE_THREAD_BLOCK instead of the configured PFE_WITH_STATIC_REGS only. * hmm, __thread"ed seems to be broken 2005-01-10 _ <guidod@gmx.de> * add CODE/END-CODE for those architectures where we do know the assembler-snippets for sbr-call-threading. * adapt test/checkans accordingly * move "RAISE" and "SIGNAL" from misc-ext to signals-ext * mark both "RAISE" and "SIGNAL" as obsolete and introduce RAISE-SIGNAL and FORTH-SIGNAL. Since RAISE-SIGNAL is defined with a different stack behavior we also introduce "RAISE-SIGNAL.DROP" as the fallback for the old RAISE. * mark forth-signal callback as FIXME 2005-01-08 _ <guidod@gmx.de> * add comment blocks to mk/Make-H.* (i.e `make gen` / `make force-gen`) 2005-01-07 _ <guidod@gmx.de> * serious: p4_Exec calls three parts with an "th"(p4_Thread) argument but p4_run_script_file has been using PFE before re-preparing the hardware VM registers. That is no problem if the register was not used in between but it breaks on some platforms. Damn it! * modifying test/wordsets.fs to use TOOLS-EXT ... reveals another buglet: the "-I" adds to the end of the inc-path and any system script is found first - which does not match the local test-for-correctnesss *.sh script definitions. 2005-01-06 _ <guidod@gmx.de> * minor adaptions for x86_64 and gcc3.4 support * add lots of "const" around (include dstrings/floating) * adapt fpnostack for x64 where sizeof(double) == sizeof(cell) * add lots of cast to "int"(printf precision) or "long" (printf numeric value) or even change global variables to from "p4ucell" to "unsigned" where there were warnings on LP64 (x86_64). Note that "unsigned" might be 16bit on some systems (LP32), so this is only fine for the values being small usally. Otherwise one would use "unsigned long" instead which is 64bit on LP64. * modify def-config.h with a "sensitive" modification: if USE_FEEKSO then always set _LARGEFILE_SOURCE (before we were only setting it when also LARGEFILE_SENSITIVE) Some squarehead header files do cut out some "usual" exports when any (!) posix def was seen and fallback to pure posix, so this modification may lead to "missing function prototype" warnings in other areas. (may be we need to reverse it later..) * introducing p4celll which is defined as "long" instead of the traditional p4cell to be defined as "int". However, thinking it over again we see that "p4cell" should be "long" always to accomodate with common LP32/ILP32/LP64 systems. The old way has been (obviously) driven by ILP32 system tests. * lots of DROP/ROOM changes to make fpnostack-ext 64bit-ready, (and S>F had a bug!) * test/checkans breaks with a parsing-error on x86_64. Not yet fixed. 2005-01-04 _ <guidod@gmx.de> * testing for -9 and -23 in exceptn (SIGSEGV and SIGBUS). * move INSTALL to INSTALL.TXT - darwin "make install" will fail because filesystem names are check case-insensitive and the "install" target does already exist. * The "$<" is not portable in explicit make rules - that's what "info autoconf" says and which has come up as a problem on some BSD machines with a non gnu make tool. Let's try with "$^" as a substitute ("all listed dep targets") * add def-gcc.h for gcc-specific attribute declarations * add gcc function-const declarations to core-sub.c, version-sub.c * rename utils-sub.c to os-delay.c * cut out p4_gettimeofday into p4-gettimeofday.c and introduce def-cell.h for the basic typedefs. * move some defines from def-xtra.h to _missing.h: extern acess() and extern close() for vxworks * move the rest out of the way and make the include def-xtra.h into an include of def-limits.h plus _missing.h 2005-01-03 _ <guidod@gmx.de> * modify test script to return SKIP on missing floating module * modify toplevel makefile to exit with failure even for the make check-all case - all pfe.spec variants must be correct now! * correct suffix-transform install of modules and pkgconfig files 2005-01-03 _ <guidod@gmx.de> * create def-check.c and def-limits.h * change some def-headers to include at most pfe-sub.h * move testmodule to testmodule1 and create a new subdirectory testmodule2 which shows a non-automake autoconf'ed way to build and install a pfe binary module * add p4_NEED / P4_NEED code for loader-WordLists * update pfe/complex-ext.c from DNWs site * modify complex_init - use new P4_NEED loader-code 2005-01-02 _ <guidod@gmx.de> * reworked the asm parts of the header files * both -sbr-call-threading and -sbr-call-arg-threading do work, atleast for i386 architecture. Perhaps the others are broken now for the change of p4RP/PFE_SBR_RP by +1 ... where the corresponding -1 adjustment in other places have been done blindly. 2004-12-01 _ <guidod@gmx.de> * checking for sbr-call-threading - and found a master bug that did not hit before since we did use -fomit-frame-pointer but now we use the #define p4IP (p4RP[PFE_SBR_IP_OFFSET]) and "PFE_SBR_IP_OFFSET = -1". The hardware return-stacks usually grow downwards, and while the "-1" seems natural it nethertheless wrong: now changed to "PFE_SBR_IP_OFFSET = +1" * another sbr-threading bug was found in the p4_NEST trampolin * it still leaves us with a series of test/check failures but there a little less of them. * and a long while little the bug was found: if not -fomit-frame-pointer then a standard stack frame is created. However any (newly introduced) PFE_SBR_RP_EXIT will not restore the parent-ebp since the forth sbr-threading model does not use a frame-pointer. Therefore, we are going to backup/restore ebp in p4_sbr_call if that seems reasonable. * that leaves us with just three fails in "make check" 2004-12-31 _ <guidod@gmx.de> * did check with "gcc -ansi" for maximum compatibility strictly_ansi requires to set a few -Ddefines since the linux glibc headers will not export functions that are otherwise useful and very widespread even across no-unix systems. * move memmove and strlcat definitions to os-string * clean up some of the INC/DEC macro usages * make p4_TIB to be constant - and fix the warning messages that it provokes - only one is currently left. * move intentional compile-time #warn message in dl-def.c to be visible now only in the runtime execution of ".STATUS". * remove PFE_MODULE_DIR and add P4_opt.lib_paths that can also be initialized via PFELIBDIR and add more parts with --lib-path * using --lib-path-string we can set the build-dir module path in ./test for doing a real `make check` before doing `make install`. * switch pfe.spec rpm to do "make check-all" instead of "make check" before install/packaging. That is a strong enforcement as it enables the make-check for all --with-variants and includes the new fix for the test/exceptn tests including sigbus things. * sbr-threading seems to be broken (rpm test succeeds anyway). 2004-12-31 _ <guidod@gmx.de> * introduce os-string.h and os-ctype.h and replace all memcpy/strcpy/isprint functions with p4_-prefixed ones * replace P4_INC/P4_ADD with __extension__ macros when using gcc 3.3 --with-regs since addressof does not work then * replace COPY / ZERO macros with _p4_copy/_p4_zero macros which do now use the p4_-prefixed ones from os-string.h * all those gcc 3.3.x depractation warnings have been silenced down includes an change in def-macro relating to increment/decrement pointer values (including p4SP,p4IP) where will also need to globally replace all usage of P4_INC(P,T) with P4_INC_(T*,P) and all usages of P4_VAR(T,V) = X with (V = (T) X). * yes, say a big thankyou to the gcc developers who try to be aggressivly ansi-C compliant while making the life of the common C-programmer somewhat harder including places where it is really really dubious. Sorry for all the inconveniences. 2004-12-30 _ <guidod@gmx.de> * fix autoconf/automake issues in configure.ac * fix make-check problems related to loadm we now have p4_loadm_test everywhere 2004-12-24 _ <guidod@gmx.de> * last merge with Tek * adding all the latest of dnw 2003-07-03 _ <guidod@gmx.de> * the last merge with Tek was wrong, SORRY. * NVRAM stuff is now included, finally * need to fix a few doc things 2003-07-01 _ <guidod@gmx.de> * adding a new header-fields.dbk * reordering docbook entries in doc-index.dbk * changing all parts into xincludes - need to copynpaste the entities like PFE and Tek. 2003-06-30 _ <guidod@gmx.de> * need two_constant_RT declared through DEF_RUNTIME to make it visible to option-ext.c in some variant modes. The file changed however is def-comp.h * fixing a few bugs in uppercasing.dbk 2003-06-30 _ <guidod@gmx.de> * dnw did try on darwin, need to add <sys/time.h> include alongside of <sys/resource.h> on most bsd systems. * adding -no-cpp-precomp to bin/configure.ac example 2003-06-30 _ <guidod@exgate.tek.com> * merging with latest Tek changes to introduce nvram-style option processing. * fixing minor problem for build on solaris * add doc/uppercasing.dbk 2003-06-27 _ <guidod@gmx.de> * modified configure and pfe/configure.ac to pick up a few of the newer ax macros * we do generate pfe/pfe.pc and pfe/pfe-uninstalled.pc now via an ax macro * we use the newer ax_set_version_info now which makes for better computations of stuff * lib/Makefile.am is a new file, the lib directory shall hold a few examples now to test external module generation. * the resp. files have moved from ./Makefile.am to lib/Makefile.am * no changes to the source code, awaiting merge with Tek changes * ooops, adding sys/resource.h detection and a call in main-stdc.c for setrlimit(RLIMIT_STACK) to guard against infinite recursions. * a bug in pfe/Makefile.am - change incorrect @DYNALINK@ ... -lm into -lm @DYNALINK@ for each of the three math modules * need to fix in bug def-restore.h (already in Tek tree?) * adding installation of pfe.pc * move to automake 1.5 always and add dist-bzip2 * modify pfe.spec, use bzip2 as main package format, and bundle the new pfe.pc along... 2003-04-25 _ <guidod@gmx.de> * create bin/ subdirectory * modify main-sub.* to export C API interface for PFE thread on hold - for internal scripting. * create bin/pfe-exec example binary * try bin/pfe-exec ".s" or bin/pfe-exec "1" "0" "/" 2003-04-26 _ <guidod@gmx.de> * no time lately, the changes from earlier this month have been done in the tek archive for quite a time. * update with ac-archive 5.51 macros, esp. subdir build 2003-04-09 _ * added to selftests * merged with complex-ext (manual editing was needed here) * the queryapp selftest did not work: we need to setup the PFE.term always and the APPLICATION-mainloop setting should be tested before going into stdio-mainloop (and both are set before the default query-mainloop). 2003-03-23 * automatically adding -no-cpp-precomp on darwin * introduce DLLFLAGS / DYNALINK separation to accomodate with darwin 2003-03-22 _ <guidod@gmx.de> * add two new ac-macros PATCH_LIBTOOL_ON_DARWIN_PASS_ALL - fix a libtool-1.4 darwin problem PATCH_LIBTOOL_CHANGING_CMDS_IFS - fix a libtool-1.4 continuus prob * rename @libpfe_LIBADD@ into @DYNALINK@ and make the ldso dependencies of structs.la and complex.la only available if it is does work on this platform - or even required through no-undefined like on windows. Create a "--enable-option" for it? 2003-03-20 _ <guidod@gmx.de> * finally - invent a variant that walks the registered wordsets looking for decompiler routines. * enhance with emitting the wordset name for a word that was decompiled with a wordset-lookup for RTCOs * distribute all RT_SEE codes to their respective P4RUNTIMEs, this includes builds_RT (core-ext), constant_RT (core-ext), value_RT (core-ext), two_constant (double-ext), offset_RT (useful-ext) - only colon_RT and does_RT are left since they decompile the "rest". * add knowledge about p4_FXO and p4_SXCO words * misc-ext is called "Compatibility" now * in CTC, we compile p4code, in ITC, it is p4xt, and there is a typedef that covers the right thing: p4xcode. Let's pick that up in lit_SEE routines in debug-ext and wherever it has been used so far, esp. for aliases of "ip". Note that we have global define P4_REGIP_T to make it easier for us. * oops, usage of P4_TO_CODE in p4_decompile_word was utterly wrong - it already is a "p4code*". * the "rest" part of p4_decompile must be a p4xcode* as well. This changes the global definition of P4_CODE_RUN and P4_CODE_SEE as well which must return this type. * we can now decompile CTC code! well, just some minor quirks are left. E.g. "ENDCASE" did compile an execution-code being "DROP" (p4_drop) which made each "DROP" to be decompiled as "ENDCASE". gee... and same for opening "CASE" which did compile p4_noop. 2003-03-20 _ <guidod@gmx.de> * add code in debug-ext to walk the list of registered runtimes. * use new macros to register floating-decompiles for FCONSTANT and FVARIABLE in floating-ext * remove vocabulary_RT-decompile and use the default visualization. in the process, I've noticed that vocabulary was errornously exported as FXco instead of RTco, oops. * default decompiling is now done for MARKER, DEFER, VOCABULARY, VARIABLE, 2VARIABLE, FVARIABLE * again, MARKER was exported errornously as FXco instead of RTco * adding decompile-routine for ZCONSTANT in complex-ext * complex.la not rebuild - rewrite pfe/*.am to pick automake syntax of complex_la_DEPENDENCIES to register renamed-rule. HTH. 2003-03-19 _ <guidod@gmx.de> * the XXCO shall be registered in atexit_wl * implement P4RUNTIME(p4_runtime) and register RTCOs to the atexit_wl with that runtime. It allows us to find all Runtime words later in debug-ext parts. * MAJOR BUG seen: the test for redefined-word in header_comma should be on the argument-wordlist, not the CURRENT wordlist. In the normal case, both are the same which is the reason there were no problems so far, but the RTco-loading with the new model did work on the arg-wordlist w/o setting CURRENT. 2003-03-19 _ <guidod@gmx.de> * clean NFA2FF and _FFA from sources * update obsolete_RT and make some words obsolete now. * some other minor changes, e.g. t_putchar in term-lib 2003-03-18 _ <guidod@gmx.de> * get rid of term-lib warnings * get rid of trigraph warning in debug-ext * remove DVaH wordset-code and execution. * remove DSeT wordset-code and execution. * putchar is defined as int putchar(int) - fix wrapper t_putc in term-lib and get rid of a warning message over there. * re-indent term-lib 2003-03-18 _ <guidod@exgate.tek.com> * minor fixes to compile without warnings on vxworks * solaris compiler problem (alignment error): we need to defeat solaris gcc 2.95 about unrolling memcpy in save_input 2003-03-18 _ <guidod@gmx.de> * rename pfe-words to engine-ext * forgot to remove debug-error-out in file-sub, fixed now. * killing some warnings in dict-comp and environ-ext * do not call cold_system from boot_system, and replace all references to boot_system with a pair of both functions * rename to FX (p4_cold_system) and FX (p4_boot_system) * move wordset-loads of extension-modules from cold_system into boot_system. Only WORDS(forth) is kept in COLD. * move greeting messages after cold_system and place init_accept_lined also past cold_system * fixup complex.la dependencies for renamed magic * change SHOW-STATUS from SYNONYM into OBSOLETE * change WSIZE from SYNONYM into OBSOLETE * save catch-frame on C-stack alone, save-restore RP now, therefore extend p4_Except with ->rpp * rename cAtch to catchframe * make engine-sub use p4_Except instead of custom jumpbuf, even that not all parts are used for this one. * rename p4_run_forth to p4_call_loop and p4_jump into p4_call_stop * fixing P4_OFF_T_MAX 2003-03-17 _ <guidod@gmx.de> * forgot to remove debug-error-out in file-sub, fixed now. * killing some warnings in dict-comp and environ-ext * split off cold_system() from boot_system() and call it explicitly in each corner where boot_system is used now. We prepare for two-stage boot-order here. * move wordset-loads of extension-modules from cold_system into boot_system. Only WORDS(forth) is kept in COLD. * make p4_cold_system and p4_boot_system FCodes * register the interpret_loop as APPLICATION - before processing the boot_system. * redefine p4_HERE to be (void**) * rename pfe-words.c into engine-ext.c * start using p4_Except as jumpbuf in engine-sub * put the Except buffer of p4_catch on the C-stack too. * rename p4_run_forth into p4_catch_call to flag similarity. * rename p4_jump to p4_catch_call_exit * SORRY - this does not work, all things deleted, and starting over with the prior version now. 2003-03-17 _ <guidod@gmx.de> * start off with an alternative wordset-loader that goes through calling FX(code) instead of duplicating behavior in dict-comp.c - the new mode can be enabled using a commandline-option "--walk-on". Later in the pfe devel tree it will be the default that needs to be disabled with "--walk-off" to double-check on loader-errors. * the alternative wordset-loader pushes the arg on to the SP-stack, puts the name-string as new TIB to be picked up with WORD/FX_HEADER calls. The save_input does use the SP-stack which is just a great idea methings. * speedup processing with giving _parseword a quick path to return the static string from the wordset table. * interesting: the new mode will reduce the CTC trampoline code to only select RTCO/ITEM pieces. The type-codes for loader-table and RT-header may even be differently in the future, atleast for non-RTCOs. * introduce the "___"/"____" as known from my other works which simulates the hadny C99 variable declaration style for pre-C99 compilers. * the `make check` succeeds! therefore, we set the new mode as the default. Please disable with --walk-off to check whether it actually is the source of a problem when you experience some in other corners. * a user-config USE_NEW_LOADER is added to deselect the default for the new loader-mode. It is 1 by default. * let `make clean` work again (removal of doc/src problem) * work on local lib-renamed philosophy 2003-03-16 _ <guidod@gmx.de> * replace _CHECKDLL with a runtime option "--dlerror-on" * there seems to be a bug about p4_next_line .vs. p4_read_line! * add AC_TYPE_OFF_T to configure.ac - and get _pfe_off_t in consequence to be used in file-ext.c * rename fsize into p4_file_size and let it return _pfe_off_t * make UL2UDC superflous in file-ext, and put the double-cell directly on the stack. Also make the system clean for long-off_t in these parts: FILE-POSITION, FILE-SIZE * the inverse is UDC2UL in RESIZE-FILE REPOSITION-FILE * the _is_nullfile alternative did often not do the same stack effect - which is an error of course. * mark all locals as registers, possibly killing a localsframe on the C stack for these. * rename fn_size to file_size and make it static * truncate() needs to be static * fn_resize becomes p4_file_resize * fn_move becomes p4_file_move * fn_copy becomes p4_file_copy * configure.ac checking for fseeko / ftello * introduce def-config defines for _p4_off_t p4_ftello p4_fseeko * replace all fseek/ftell references.. * replace long with p4_off_t where apropriate, including _fextend, file_extend, p4_file_copy, file_size, p4_file_size, truncate, p4_file_resize, p4_resize_file, p4_reposition_file, * p4_File and p4_Input contains an "off_t pos" position now. (note: File->size is left as is, it is in blocks) * the PFE should now be largefile clean, adding ac-macro ac_sys_largefile_sensitive right in there. * glibc fseeko bug found - bug report sent - making a fixup in def-config.h about it. * luckily, we do already have a test/file.4th - which did allow to find a bug introduced during that hunt for the glibc bug. * introducing P4_OFF_T_MAX to help with p4_file_copy argument. 2003-03-15 _ <guidod@gmx.de> * signal-ext does have problems when SIG_DFL is #define'd as (void(*)())0 which isn't a proper function prototype. I can not do more than document the problem in a comment. * it seems to have been a problem related to a bad implementation of the new variant of ax_cflags_strict_prototypes. With a new one it just works as it does suppress this option on platforms where signal.h is not done correctly. 2003-03-14 _ <guidod@exgate.tek.com> * merge oss changes * double-mix /DCELL and DCELLS did never exist * header-ext HIDE was never exported * shell-os-ext "CD" clashes with "HEX CD" actually - remove it * shell-os-ext "$$" was also obsolete for some time, remove it now * adjust toplevel Makefile.mk to allow auto: target to reconfigure autotools within tek environment 2003-03-13 _ <guidod@gmx.de> * integrate complex-ext by David N. Williams * extends PFE/type with two variables * need to rename include_HEADERS to include_DATA to ensure that pfe-config.h is _not_ distributed * oops - instead rename pfe-config.h and pfe-target.h into _config.h and _target.h - add -I.. along, and modify the sourcefiles to #include pfe/conf.h and pfe/target.h now 2003-03-13 _ <guidod@gmx.de> * forgot install -> install-all in pfe.spec * clean subdir-build macro and pfe.spec to do the right thing 2003-03-12 _ <guidod@gmx.de> * try to simulate --enable-all with a series of --with-variant calls interpreted by the toplevel configure part * now we need Makefile.ax snippet to add the `make rpm` target * add `make check` to spec file - hopefully it works like this * forgot incl-mix.h * move pfe-config.1 into doc * move install-man into doc * doc/Makefile.am needs some top_srcdir and srcdir references * doc/Makefile.am cleaning references to src/Makefile and xm-tool 2003-03-12 _ <guidod@gmx.de> * move test-scripts into test/Makefile.am * move doc-target to doc/Makefile.am - actually just a removal 2003-03-12 _ <guidod@gmx.de> * automatic subdir build with a new ac-macro * tweak pfe/configure to get rid of acinclude warnings * using TARGET_H macro now to create uppercase host/target defs. * using modern AC_PREFIX_CONFIG macro as well. 2003-03-11 _ <guidod@gmx.de> * start off generation 33 2003-03-11 _ <guidod@gmx.de> * forgot a "const" in fmt of to_float (floating-ext/fpnostack-ext) * show REGFP when REGLP not available (".STATUS" in misc-ext) 2003-03-10 _ <guidod@gmx.de> * USE_STRTOD and USE_SSCANF should be USER-CONFIGs in both floating-ext and fpnostack-ext * change the default for these to 1 - should be the better option according to David N. Williams and Krishna Myneni * slightly reformat in fpnostack-ext and floating-ext, esp. use #warning with GCC and an error-halt for other compilers. * add some headroom for F-stack in floating-ext, can be set with USER-CONFIG FLOATING_HEADROOM 2003-03-07 _ <guidod@gmx.de> * through error-checking, add #ifdef _CHECKDLL in dl-ext.c to allow refined testing. * badly named new functions, needed s/p4_ftrunc/p4_f_trunc/ etc. 2003-03-07 _ <guidod@gmx.de> * after long discussions with Krishna Myneni and David N. Williams the following compromise regarding F>S behavior was found: * FTRUNC>S and FROUND>S added to both of floating-mix and fpnostack-ext * F>S is a synonym of FTRUNC>S in both floating implementations. * FTRUNC is added to both floating implemenations as a complement for the FTRUNC>S function (note: we do have now FROUND and FLOOR from ANS Forth plus FTRUNC extra but no FCEIL as in math.h) * "F-ROT" is added as a synonym of "-FROT" * in fpnostack-ext, adding CELL-FALIGNED environment hint that can be checked in implementations on hardware that would SIGBUS when a floating-point is not self-aligned in memory including the stacks. * modify test/fpnostack to succeed on all systems that are not cell-faligned - to make it easier to detect real errors. * add NEEDS / (ENVIRONMENT?) magic to autoload forth files when NEEDS -<filename> is given. Also strengthen the requirement for now that the filename _must_ contain a dot or slash and also starts off with isalnum character. Remember: NEEDS items must have a length between 4..25 for compatibility reasons, which is a limit not applicable to REQUIRES as such. * change p4_required - prepend atexit-wl name with "-" in front and append ".*" if neither of "." or "/" exist in the filename. This is an incompatible change - hopefully no one did use the file:<filename> auto-named functionality so far (e.g. for some reload scripts). I do expect that to be the case and the change to be safe - but who knows for certain :-/ 2003-03-05 _ <guidod@gmx.de> * dbk/pfe-fth.mk - oops, s/pfe-fth.htm/pfe-fth.html/ * remove dbk/Makefile - wrong idea * adding HPPA to fpnostack-ext section for DOUBLE_ALIGNED * floating-mix s/F-ROT/-FROT/ * add some comments in floating-mix, esp. F>S 2003-03-05 _ <guidod@gmx.de> * merge fpnostack-* changes from krishna Myneni * add doc/changes generated from ChangeLog 2003-03-05 _ <guidod@gmx.de> * need to modify wordset2words.pl for dpans-reading * add --nofileref option and use it in doc/Makefile right away. * merge floating-* changes from David N. Williams 2003-03-04 _ <guidod@gmx.de> * add body.htm and htm->html generation to doc/Makefile just as known from some of my other projects - an easy way to add a common navigation bar to website files. * remove SFHOST install-sf target in doc/Makefile - it is superfluous from my own system having a scp-groups script * remove PERLXM rule dbk->xml in doc/Makefile - they do not belong here anymore, same for c->xml, only xml->html is kept for the sake of $(SRCS).tar generation and the various index-lists of old-style doc generation toolchain. * rename sfbasics -> htmfiles, and build it from body.htm chain. * invent $(DBKS).tar as dbk.tar and filling dbk/* * make dbk/pfe-fth.mk index.html target to do `xmlto html` instead of `xmlto html-nochunks` of the htm target * pack dbk.tar and unpack with install-docs * add *.htm to DISTFINDFILES in toplevel Makefile * split sf-index.dbk into body.htm, index.htm, resources.htm, authors.htm and derive license.htm and lgpl-license.htm * remove dbk.tar - it is too big (7.7M) and should not be in a source tarball of pfe - instead reference ../dbk/index.html directly and copy the files as they are. * instead of "dbk/" subdirectory, use a different scheme * rename resources.htm into documentation.htm * rework the frontpage * oops, need to add dpans.ar and 4thtutor.ar again 2003-03-03 _ <guidod@gmx.de> * final fixes for aix-cc (thanks Gary!) * five new words in floating-mix as wished for. 2003-02-29 _ <guidod@gmx.de> * adapt dbk/pfe-fth.mk for local install with some external xml-c-pfe-doc binary. (fix: pfe sources are local now). * fix wordsets2words.pl: HOLD -> hold:core: instead of hold::core * fix wordsets2words.pl: slightly different behaviour for some s/...//gsex - returns ALL in my version but NOTHING in the tek version. Use s/...//gsx instead. * target "htm" to create pfe-fth.html as `xmlto html-nochunks` 2003-02-28 _ <guidod@gmx.de> * the AIX 4.1 cc compiler is especially stupid regarding lvalue propagation across type-casts. We introduce a new def-macro P4_VAR that will cast to target type. In the normal case, that is ((_TYPE)(_VAR)) but in the aix-cc case we do use now (*((_TYPE*)&(_VAR))) instead to make it an lvalue of the given type. We throw in the WATCOMC as well, btw... * modified files to pick up P4_VAR: header-ext.c:198, option-ext.c:141,143 forth-usual-ext.c:p4_fetch_plus_plus,p4_store_plus_plus zchar-ext.c:67,69,74,78 dstrings-ext:111,371,371,373, dstrings-ext:1222,1225,1227,1299,1300,1301,1302,1304 dstrings-ext:1318,1319,1328,1367,1368,1370,1392 * fix P4COMPILES/FX_COMPILE in chainlist-ext.c * disable volatile in signals-ext.c * adding include<termio.h> near include<sys/termio.h> to get away with aix term.h to require struct termio but not including the header file itself (similar to solaris). 2003-02-28 _ <guidod@gmx.de> _ merge with Tektronix CMS.......... * core-ext.c - many doc updates - COUNT changed slightly in behaviour for values 0..255 * def-const.h - introduced P4_NEGATIVE to be seperate from P4_TRUE, modified core-ext.c FIND accordingly to use now the P4_NEGATIVE and P4_POSITIVE defines. * main-k12.h - typedef for msc_strings 2-dimensional (bugfix). * misc-ext.c - doc updates - UNDER+ renamed to (UNDER+) and the term UNDER+ provided with it as an obsolete name - bug report from Anton Ertl that PFE does use an UNDER+ being different from eveyone else. The UNDER+ is comus. We introduce a word +UNDER that has the behavior of comus UNDER+. At some later point in time we may make a synonym of UNDER+ and +UNDER. * double-ext.c dstrings-ext.c environ-ext.c header-ext.c host-k12.c locals-ext.c useful-ext.c zchar-ext.c - just doc updates 2002-10-20 _ <guidod@gmx.de> _ update FROUND with latest version from Krishna Myneni _ this includes an extra configure.ac check for rint() in libm _ adding F= and friends to floating-mix as proposed by Krishna _ added NEEDS as self-parsing variant of ENVIRONMENT? _ modified logging.h prefix-strings to be better suited in a hosted environment with a terminal to show both the forth terminal strings and the stderr fail/warn log messages 2002-10-16 _ <guidod@gmx.de> _ added integration steps for fpnostack - including user-config defines for the interpret-slots _ added user-config for FROUND_FLOOR - changing the default of floating-ext to that of fpnostack-ext as being the correct but slower implementation. The old behaviour is retained as a user-conf 2002-10-12 _ <guidod@gmx.de> _ added fpnostack-ext courtesy of Krishna Myneni of kForth fame 2002-10-01 _ <guidod@gmx.de> _ added a few gcc 3.2 fixes - still buggy however for many cases 2002-09-10 _ <guidod@gmx.de> _ initial support for sparc sbr-threading - incomplete. _ partly fixed ia32 sbr-threading - the include-file does not yet go 2002-09-09 _ <guidod@gmx.de> _ various small fixes up to here _ including a ">name" bug to be fixed _ adding another doc page _ reworking the toplevel configure/makefile to work smoother than ever _ removing some missing's _ and cleaning the kitchen ;-) 2002-08-14 _ <guidod@exgate.tek.com> _ bug report, win32 compile problem reports, and other valuable comments by Joonas Pihlaja jpihlaja-at-cc-helsinki-fi _ removed _image functions _ tek-related small changes that should not pop up in sf-versions. 2002-07-17 _ <guidod@exgate.tek.com> _ found a little bug about uppercase match _ made provisions to live with uppercase and lowercase feature for a long time - added a bunch of new options for them _ the wordl_flags have got expanded here _ implemented getenv-style for getoptions _ some tek-specific additions in term-k12 and host-k12 _ found out that complete_word was horribly broken, possibly for quite some time, just noticed by testing in the new world of uppercase matching. Added a complete new implementation. 2002-07-16 _ <guidod@gmx.de> _ found a bug in main-sub near -I copying routines +1 -> +2 _ postpone.fs is not newstyle caselessmatch ready - fixed it. 2002-07-15 _ <guidod@exgate.tek.com> _ prepare uppercase-caselessmatch feature _ search_wordlist and find_local will print a warning message _ search_incomplete and do_match do not match with oldstyle ones _ search_option does already use newstyle, without warning _ no configure option has been added to shut off the warning messages in this version to gain the speed that is intended to be there when all p4_strncmpi occurences get deleted 2002-07-10 _ <guidod@exgate.tek.com> _ did try with a chain-ext implementation and dumped it. It is however shipped along for reference or future implementation. _ implemented chainlist-ext instead and bound two wordlists into the outer interpreter: prompt-wordlist and abort-wordlist _ likewise, atexist-wordlist is now officially exported and an extended do-all-words-while has been implement to cover similar executions as for `forget` _ in the course, the normal_execute was slightly touched and modified, hopefully no bugs did get it. _ added dstrings patch from DNW as show below (ccm version 0.6.28). 2002-06-27 _ <david.n.williams@umich.edu> Version 0.6.26 _ Fixed bug in ENDCAT so it properly leaves EMPTY$ when there is no concatenation in progress. Also fixed ENDCAT specification in dstrings-ext.c, as well as in dstrings.html (not in pfe distribution). 2002-06-18 _ <guidod@exgate.tek.com> _ move test/* into install-subdirectory share/pfe/test/ so we can have them installed along always without cluttering the space needed. In unixish systems, the test/ directory might also just be a symlink to the pfe test/ directory, so it is always up to date. _ rework self-checking of pfe, to make it easier to get along with hundreds of test scripts. _ implement chain-ext.c _ normal_execute will not go through p4_call/p4_run_forth anymore. _ create a macro FX_EXECUTE to make room for optimizations. 2002-06-17 _ <guidod@exgate.tek.com> _ add a small fixup for win32 sig handling. _ add `make installs` into pfe/Makefile.am, and add an sed-subst for a series of `make install-it` forward-rules to handle some cases easier where make jumps on dirs and filenames of similar name of a phony target. 2002-06-11 _ <guidod@exgate.tek.com> _ add _NULLFILE_ROBUST in file-ext.c, just problematic in win32 api _ SPY-ENTER and SPY-DEFER for with-spy.c, partial call-threadin support 2002-06-05 _ <guidod@exgate.tek.com> _ merge latest changes made for Tek's upd-pfe.exe _ test for different variants 2002-06-04 _ <guidod@gmx.de> _ fix build issue for i386 -calls and -fast variant _ make-check-all still a bit broken 2002-06-04 _ <guidod@exgate.tek.com> _ integrate dstrings-ext updates at version 0.6.27 _ place come_back onto main-sub throw-exit _ invert semicolon-hook in core-ext as suggested by DNW 2002-05-29 _ <david.n.williams@umich.edu> Version 0.6.25 _ Fixed bug in SEE-handling for ARGS{ words. _ Promoted $GARBAGE? to the regular dstrings word list. _ Renamed M" and M` to CAT" and CAT`. Much more descriptive, and Guido's SYNONYM uninhibits the user from defining shorter synonyms. _ Changed C names and labels to reflect mstring (measured string) replacement for pstring (packed string) terminology. _ Added conditional throw compiles (#if mcount size less than cell size) for mcount overflow on cats and Forth string copies into the string buffer. Cleaned up and consolidated USER-CONFIG's for mcount size. _ Reviewed and updated in-source documentation, updated prototypes. _ Revised dstrings.html and smodel.html. _ Changed the default USER-CONFIG from short-counted (nominally 16-bits) to long-counted strings (nominally 32-bits). _ Added $FRAME-DEPTH to debugging section. _ Fixed a bug in ENDCAT revealed by testing with char-size counts. Tests with char, short, and long all work, as far as they go... 2002-05-13 _ <david.n.williams@umich.edu> Version 0.6.24 _ Fixed bug in p4_collect_garbage() where a string stack scan to update forward links was omitted for dynamic strings bound to variables. Also made the link update code more efficient. _ Fixed another bug in p4_collect_garbage() by moving "target = next;" at top of do-loop from inside to outside the loop. _ Added $GARBAGE? in the debugging section. Maybe it should be promoted to the regular dstrings word list. _ Improved trystrings.fs and renamed as trydstrings.fs. 2002-05-24 _ <guidod@exgate.tek.com> _ lots of small changes in between which led to sbr-threading support for PowerPC architecture. Sadly, only a speedup of factor 2 was detected, so we decided to not develop this part further than it is. Note that the portable call-threading does already provide a speedup of 50%, and this should be much more stable. Anyone with a powerpc computer should probably check for bugs in powerpc-sbr-threading support. Personally, I think that the real problem is the shortness of forth words - the proc-entry code for each native-code function is 16 bytes (4 opcodes), and the exit-code is 8 bytes (2 opcodes), a body-arg is encoded in 8 bytes (2 opcodes). If we could do code-inlining, the proc-overhead would be reduced drastically, but without it, only factor of 2 (or 100% execution speedup) is achieved at the expense of having no debugger, no decompiler, no patch facilities. _ this will probably the last 32.x version as I'll turn towards other areas of the internal system to add speedups or new features, and it is quite likely that it breaks backward compatibility - the whole sbr-threading and call-threading parts was mostly #ifdefs and change of macros in many places, the ITC-type objectcode should be touched significantly. 2002-04-03 _ <guidod@exgate.tek.com> _ wrong sbrx-ac_define in configure.ac _ split dict-sub.c into dict-sub.c and dict-comp.c where the latter includes the loader and compiling words while the first is for dict wordlist build and search and forget. _ _missing.c should be linked to libpfe, even that it does not contain anything so far but for a few embedded platforms. _ the change from p4_header to p4_header_comma did sometimes forget to place a P4RUNTIME1 - in dict-comp it broke loader vocs. 2002-04-01 _ <guidod@gmx.de> _ change saved_input mechanics to allow it to be done in _included and _evaluate that took RP so far but that's not allowed in sbr-threaded mode. Reduces the test/-series to just two partial-fail and one fatal-knock-out. _ sbr-fix +LOOP ... and go back to standard DO behaviour _ sbr-fix DOES> _ make optimization for sbr-arg-variant - do not need to make a copy of RP to modify it, just save IP value of top-of-RP. _ only test/exceptn is left to fail _ dont forget saved_input in unnest_input... _ DONE !!! --with-sbrx-threadings works best!! _ finally: change the names of it: --with-sbr-threading => --with-sbr-call-threading --with-sbrx-threading => --with-sbr-threading PFE_SBR_THREADING -> PFE_SBR_CALL_THREADING PFE_SBRX_THREADING -> PFE_SBR_CALL_ARG_THREADING and adjust the toplevel configure 2002-03-31 _ <guidod@gmx.de> _ sbr-fix for DO / LOOP - the implementation uses the other variant now with RP[0,1] set to SP[0,1] directly - otherwise the implementation was too complex to fit everyting into the i386 registers which did lead to RP overlap in SBR-threading. _ loop-test does now succeed. _ sbr-fix for fx_skip_string, a.k.a. s" xx" and friends - it does however need a complete ifdef-series and a set of new macros called the NEW_IP macros now. _ 2/3 of the test/-checks do work now missing are: coretest postpone search-order wordsets (probably due to problems around postpone and friends.) 2002-03-30 _ <guidod@gmx.de> _ add --with-sbrx-threading that pushes the body_addr/code_addr via an argument to the runtime/execution routines. Add some new macros for that, compile_xcode_BODY and compile_xcode_DATA are used throughout, and FX_POP_RT_BODY is changed into the two parts of FX_USE_BODY_ADDR + FX_POP_BODY_ADDR. _ the _XE routines must be changed later with FX_USE_CODE_ADDR _ dont forget to add to all _RT and _XE routines their USE-arg declaration - one can use a macro for that by changing the FCode into FCode_RT and FCode_XE resp. _ make all RP-accessing words into compiling words that will compile an execution. This is needed for passing them RP / IP these words include: >R R> R@ >2R 2R> 2R@ I J LEAVE UNLOOP (core-ext) plus K (forth-83-ext) ?LEAVE RP@ (forth-usual-ext) R'@ R'! R"@ R"! R! 2R! DUP>R R>DROP 2R>2DROP (misc-ext) _ note: THROW / CATCH are just ifdef'd out _ modify mk/Make-H.pl to actually see FCode_XE and FCode_RT _ let sbrx IP do at RP[-1] - which actually works _ the speedwhile.fs on my 800MHz P3 results in: ITC: 38s CTC: 35s SBR-CTC: 29s SBR-ARG-CTC: 21s ITC: 100% CTC: 92% SBR-CTC: 76% SBR-ARG-CTC: 55% _ renaming things a bit for --enable-all and the rpm.spec --with-call-threading => --program-suffix=-call --with-sbr-threading => --program-suffix=-calls --with-sbrx-threading => --program-suffix=-fast _ add some complex i386 register-selection stuff in def-regs.h 2002-03-30 _ <guidod@gmx.de> _ add -fast to pfe.spec file representing --with-sbr-threading _ FX_COMPILE should use FX_COMPILE_COMMA_XE instead of FX_COMMA on XE _ speedwhile.fs says that pfe-fast is 3/4 time of pfe-call note that this is *with* -fframe-pointer 2002-03-30 _ <guidod@gmx.de> _ add toplevel configure meta-tions --use-call-threading and --use-sbr-threading that will add a --program-suffix as well. _ fix p4_call for 386 - the CALL-NEAR needs an offset target 2002-03-29 _ <guidod@gmx.de> _ added test/postpone.sh _ added test/search-order.sh and forth script _ modify all .sh files to use a $testcase variable _ prepare sbr-threading _ fix [COMPILE] - p4_comma -> p4_compile_comma _ fix DVaL type in dict-sub (e.g. FORTH-WORDLIST) _ ifdef _SBR_THREADING where needed _ --with-sbr-threading variant compiles and boots 2002-03-29 _ <guidod@gmx.de> _ fix destroyer-functionality in forget _ fix missig pop_rt_body in floating-deinit _ `make check` does succeed 100% now --with-call-threading _ add FX_RUNTIME1_RT optimization _ `make check` does again succeed --without-call-threading 2002-03-29 _ <guidod@gmx.de> _ vocabulary-rt did not use POP_RT _ rename p4_var_RT to p4_variable_RT to be good for _DEF_RUNTIME1 2002-03-29 _ <guidod@gmx.de> _ omit another signal/raise test/* _ bug in test/loop-test.sh (wrong temp file) _ fix call-threading POSTPONE _ fix DOES and option-ext - these did modify the xt with an xcode. _ make-check runs now through (well, just LOADM floating fails) _ warning-free core-ext _ header-sub / header-ext - here some did modify the xt with an xcode _ debug-ext - here some did modify the xt with an xcode _ invent the optimization FX_GET_RT in place of FX_GET_RUNTIME1 _ apply to debug-ext, core-ext, option-ext, header-sub _ p4_obsoleted_synonym -> p4_obsoleted _ p4_create_does -> p4_builds _ export def_runtime in def-comp - including some weak variants _ add a "-call" variant to pfe.spec to test the variant as system pfe 2002-03-29 _ <guidod@gmx.de> _ delete p4_make_header and p4_header - this did need in turn to create a few dummy symbols to attach P4RUNTIMES to. This makes the test/wordsets to run now through. hoorray. _ make-check error-count down to 39. 2002-03-28 _ <guidod@gmx.de> _ call-threading!!! - it works for many things now, if not all... 2002-03-28 _ <guidod@gmx.de> _ add three configure options --with-nosmart ... the code exists for a long time --with-call-threading ... next step to be implemented --with-sbr-threading ... add some asm snippets on top call-threading _ start adding defines in the headers to prepare for call-threading _ often change p4xt into new p4xcode - which are the same in ITC _ often change *xt into *P4_TO_CODE(xt) - in ITC, the macro is a noop _ sometimes change (**ip)() into (*ip)() _ in debug-ext, have to disable some sections... _ --with-call-threading, compiles, and boots. But that's it. _ because the loading-table has been turned into saving the words-entries directly in the cfa of the words, so how to find and execute them. well, that's the task for the next version. 2002-03-27 _ <guidod@gmx.de> _ add SOURCE-NAME to misc-ext in parallel of SOURCE-LINE _ change P4RUNTIME into P4RUNTIMES to add a flag for ONLY-CODE to prepare the use of call-threading 2002-03-25 _ <guidod@exgate.tek.com> _ add RESET-ORDER-IS exporting PFE.reset_order (search-order-ext) and make an if() around RESET-ORDER within abort_inits and set the default to TRUE in boot_system (engine-sub), so that the default behaviour of PFE is not touched but a user can disable the implicit RESET-ORDER ON ABORT. _ let DEFAULT-ORDER save CURRENT too, and let RESET-ORDER do also reset the CURRENT definitions-wordlist. _ add --with-static-regs, and modify a few headers and main-sub to use a memory area for the complete ForthVM instead of just a single pointer for single-threaded non-cpur-regs mode. This can speed up the execution for a statically-linked program as the C compiler / Linker can precompute the final address of each ForthVM register and system-variable. Just like the case of the regTH in memory, it allows to compile this PFE also with non-gcc compilers or machines that do not yet have a good register allocation for the ForthVM in hardware registers. _ in the course, use main-def.c now, add main-alloc.c, and modify .STATUS to report the two regTH/regVM modes. From main-sub, four new functions are exported and two extern references for the two global static memory areas called p4_reg (static p4_Thread) and p4_opt (static p4_Session). _ note that you probably don't want to use shared-modules with static-regs but it is left up to the packager to decide. _ modify the boot-order a bit - after --boot-file, do an implicit DEFAULT-ORDER that includes the FORTH-WORDLIST in DEFINITIONS, then let main-sub load the include_file. Cut out the CURRENT=FORTH_WL in abort_inits, and let it load through RESET-ORDER which might have been modified by the include-script. This fixes some annoyences with includescripts. 2002-03-19 _ <guidod@exgate.tek.com> _ remove PFE.query_hook, add PFE.lined_accept.intercept 2002-03-15 _ <guidod@gmx.de> _ new style had a bug for without-modules, detected on darwin os. 2002-03-14 _ <guidod@gmx.de> _ change dl-internal.c loading. Instead of linking the symbol into dl-ext.c, there is now an external call through main-sub.c that sets a new PFE.set->modules pointer in our option area, usually before booting the pfe thread. The problem came up since for win32/darwin we did need to let resolve all symbols, however libpfemodules needs symbols from libpfe, and libpfe needs the p4Words(internal) symbol from libpfemodules. At the same time, this interdependency might violate LGPL rule [2d] when the libpfemodule contains code not under LGPL, as it is a static interdependency not given through an optional argument nor through a declaration in the headers. After all, the dl-internal.c should get linked to libpfemodule.la, not libpfe.la, and our main-def gets linked with both libpfe.la and libpfemodule.la, and main-def uses a call to declare the address of the table in dl-internal.c to the loader in dl-ext.c : in the course we rename the feature to set->modules standing for set-prelinked- modules-table. Theoretically, they might not be prelinked but dynalinked but that does not make much sense since in that case we could probably dynaload each module on its own through dl-ext. _ in the course of changes, I had to note that the zchar-ext was never compiled in the autotool'ed pfe - dear me ;-) - now it's an extra module and put into libpfemodule.la _ extend .spec to build -fig,-regs,_forth variants and prepare toplevel-configure to accept --enable-all to configure them all in one rush. _ disable the annoying warning in dict-sub - it's about pop_rt_body 2002-03-13 _ <guidod@gmx.de> _ added doc/known-problems.dbk 2002-03-12 _ <guidod@exgate.tek.com> _ some more generated docs added _ fix 0x0xFEFF decompiling error 2002-03-11 _ <guidod@exgate.tek.com> _ more generated docs and fixes _ fix dl-hpux.c error for hpux version 2002-03-10 - <guidod@gmx.de> _ forgot to add wordset-modules.dbk to doc/Makefile _ forgot to add 2DROP to end of definition of "(MARKER)". 2002-03-09 - <guidod@gmx.de> _ fix MARKER - missing VOC_LINK during store _ add new doc page _ modify doc/src/Makefile to use libpfemodule_la_SOURCES 2002-03-07 - <guidod@gmx.de> _ add a new doc page _ modify sf-index page and upload 2002-03-05 - <guidod@gmx.de> _ updated documentation files _ release as 0.32.46 2002-03-05 - <guidod@exgate.tek.com> _ here's a loooong list of changes in the last year, where this list takes its descriptions from the change-ids at Tektronix. Sometimes I did mark home work, sometimes I did just try an idea at home, and did put it in here the next day from memory, and in quite some places the ideas help just better compatibility anywhere, while in other the changes are only useful on k12xx. _ 5182 k12xx specifc, abort and windowtofront _ 5171 enable multi build again _ 5165 make check, cleanups 2002-02-xx _ 5070 msc, emu_connect, debugged _ 5065 msc, emu_connect, new syntax _ 5057 move some compat words _ 5029 tm, arbitrary number of tm-states _ 5024 msc specific _ 5008 / 5010 fix typos _ 4994 tm specific, htonl in emu_tx related _ 4991 bug, history buffer has no empty line _ 4758 bootfile load order change, k12xx request _ 4679 msc specific, poolprep 2002-01-xx _ 4634 adapt save_thread / load_thread to new module in def-restore.h _ 4633 k12xx specific, paint red on error _ 4626 new external tek modules _ 4314 msc specific _ 4482 after-merge testing fixes _ 4481 can not TYPE more than 255 (k12xx only?) _ 4607 tm specific 2001-12-xx _ 4104 big home work : prepare call-threading / sbr-threading _ 4011 make order-size settable via option-ext _ 3170 xm-tool doc generation update (december 2001) _ 3062 msc specific 2001-11-xx _ 2819 / 2820 terminal-to-front, k12xx specific _ 2809 / 2815 / 2819 updec _ 2777 updec internal descriptions _ 2547 updec enroll and fixups ... _ 2538 some fixes... _ 2312 cpu-regs save&restore, new format, sane format _ 2302 tm specific _ 2536 libtool 1.4.2 upgrade _ 2535 november 2001, the october-release is shipping, so we can start over with a new baseline cycle _ 2296 msc specific _ 2291 32.34 cleanups (yes, this is beta stage) 2001-10-xx _ 2023 another point release _ 2017 msc specific _ 1999 DLSYM implementation _ 1994 NTOHL added _ 1588 updec changes _ 1430 point release 32.30 for tek internal beta builds _ 1407 updec with 32.x generation _ 1375 pfe-all version, including realemul (pfe tek offline vers) _ 1284 k12xx padding _ 1276 goto_state / random / totalmem-optionext changes _ 1222 /1227 / 1228 /1229 / 1230 / 1231 / 1233 /1236 slowly merge work done @home into the tek tree. The change-ids are for 32.17 up to 32.27 version numbers. The private work did start off at 32.14 in the tek tree code. Have to check later what was done there at home. _ 1133 modify lined.c _ 1132 tm specific _ 1111 create header-ext, assembling related words there, and cleaning up some things _ 1046 / 1089 floating.so, added also for tek - the tek tree had been built without float support since some cpus did not have a fpu anyway. Here we add a floating module for the ones who have it, and install it on the device. The desktop pfe does now always have a floating.so module, but it must always be loaded via " floating-ext" environent? call. Before that it is not available, so the startup pfe binary has a small footprint unless floating-ext is needed for an application. _ 1045 small fixes _ 1039 k12 gui problem _ 1038 meas problem _ 1019 to_body non-const - BIG CHANGE!! the additional does-field (called aux in the sources) is killed from the word header in forth. Instead, we put the does-field *after* the cfa-field in the respective words created, where it was *preceding* the cfa until now. Now we don't want to waste memory unnecessarily, and even more, quite some program make the assumption that the PFA is CELL+ from CFA, atleast in the old fig sources. However, these old fig sources do also expect a "<BUILDS" field for the does-words to exist in PFA[0], and therefore add another CELL+ to get at the first real value. Here we change the style, the ">BODY" has been an offsetword so far, just adding CELL+ to all values given to it (i.e. like a "->BODY" word). Now the input argument to ">BODY" must be a valid CFA address (or null) since we fetch the value from the CFA, and then check if that CFA value is the runtime of BUILDS or DOES. If yes, we add two cells, if no we add just one cell, and that makes the outer behaviour ANS Forth compatible. I did check with comp.lang.forth that this is a possible mode, and in fact, by theory, a native code colon word does not have any PFA (parameter field) but a very long CFA (code field) where the latter has a size much longer than the CFA call code. In the end, after all this long text, we did achieve another effect: the --with-fig mode and the ans mode of pfe are simply identical for the internal header layout of all words, including variables, colon words and does words. People making assumptions about the internal layout being other than fig or ans asserts will however see their programs to be broken. That's why, 32.x starts here. 2001-09-xx _ 898 create comus ANEW _ 886 msc specific _ 793 more --with-k12=offline-msc _ 792 full typed comma support, part 1 (for explicit reloc info) _ 778 create "LITERAL," as the non-immediate variant of "LITERAL". Follows a discussion on comp.lang.forth about state-smart words and the need to provide a non-statesmart variant for compiling words, in order to clean postpone problems about these. _ 773 change internal voc names to bracket-style, including helper words, the bracket-style indicates that they are immediate vocabularies. Hang the base wordlist into a VALUE FORTH-WORDLIST and make FORTH to use this value. _ 765 meas makefiles adaption, tek internal _ 678 create CONTEXT? as the count for the context wordlist, this is used to add glue code so that a wordlist is only be put once into the search-order, used to prevent order overflow _ 675 add NAME>STRING to forth, as discussed on comp.lang.forth _ 12291 database transition prepare - new change ids after here _ 12131 offline msc, eventcall @ win _ 12076 offline msc, k12-real @ win, client side _ 12053 mforth, init_fkey, kill_key _ 12048 offline msc, k12-real @ win, server side _ 12029 msc default chart 2001-08-xx _ 12028 offline-msc, k12-emul @ term-widow _ 11899 vx-start sym-lkup option-ext feature _ 11875 validation req, no timeout fallthrough _ 11874 RANDOM bug, RAND_MAX is 15bit on vxworks _ 11821 auto-mingw32-build _ 11663 msc, default-state-return _ 11576 offline msc, k12-emul @ term-wincon _ 11574 msc specific _ 11570 add def-pth.h _ 11518 emu_tx word adapations (new classic adaption) _ 11453 msc timer adaptions _ 11447 key support _ 11358 k12xx specific _ 11341 sparc with-regs, makes a lot of speedup during execution _ 11322 offline pfe, solaris _ 11317 offlne pfe.exe with modules, and dll _ 11165 tm updates 2001-07-xx _ 11133 offline pfe.exe with modules _ 11129 bugfix - EXTENSIONS voc not found _ 11122 implement [POSSIBLY] and DEF' _ 11105 test-dir and scripts for k12xx specifica _ 10951 point release 31.51 _ 10950 zchar-ext should use FORTH as the wordlist base _ 10947 clocks_per_sec_bug _ 10946 split environment_Q to make it callable as a helper func _ 10944 CS-DROP / CS-SWAP implementations _ 10941 add R"@ and friends, this proposition was seen and discussed on comp.lang.forth, which I see as a lightweight alternative to LOCALS. _ 10936 in C, a "=" is no sequence point, therefore some code like FX_PUSH(SP[1]) leaves undefined behaviour. Avoid it. _ 10928 replace all OUT by p4_OUT, and remove OUT-#define, same for SPAN, add p4_COLS and use it. Some short defines are no good with win32 headers by the way. _ 10927 forth_wl is default for CURRENT _ 10924 forget vs vocs in search-order _ 10907 merge msc-string changes _ 10902 make modules for tek system _ 10895 msc specific _ 10868 create terminal-output logfile facility _ 10731 fix DEFER _ 10726 fix builds (July 2001) _ 10713 31.45 point release _ 10709 meas makefiles _ 10703 newest autotools update _ 10697 k12xx, fxt changes for more SAPs _ 10645 fix host_cpu for pfe_modules 2001-06-xx _ 10335 make a fat vxworks binary, w/ dl-internal _ 10334 remove openstring remainings, use zstrings! _ 10324 eliminate p4_Head, remove make_head, header_from and use p4_create_from in all places _ 10320 msc-default integration _ 10299 31.41 point release _ 10281 all-version, make multibuild system more clever, use build subdirs for the source subdirs (June 2001) _ 10280 some mergers around version-offspring _ 10137 uppercase HOST_ defines instead of lowercase variants _ 10130 mbs, msc, table-remove _ 10124 mforth autotool'd, build mforth.so for offline-pfe _ 10121 modules via configure, change style 2001-05-xx _ 9975 / 9988 patch points _ 9907 fix env/option problem on win32 _ 9902 zero-terminated strings and support for backslash strings, fixes prior home work models _ 9885 create dl-win32 dlopen interface _ 9883 make pfe/term-k12.c/outbuf_ring configurable _ 9873 portability fixes (see next entries below...) 2001-05-21 - <guidod@exgate.tek.com> _ cleanup some problems about cygwin and mingw targets _ create dl-win32.c 2001-05-20 - <guidod@gmx.de> _ watcom-c-10 changes. Project-files/Target-files are now included along with a dummy pfe-config.h/pfe-target.h The dos32-pfe32.exe does work great. The dos16-pfe16.exe will fail on startup with out-of-memory and if you use an option to lower memory consumption it will FREEZE WIN-95 !!! Beware of FAT-filesystem corruption !!! _ add *.tgt *.wpj to distfindfiles 2001-05-19 - <guidod@gmx.de> _ add another way to detect destroyers: check for a destroyer_RT in the XT if the name is immediate, pretty easy and portable to a configuration without an FFA. Actually, I hope to delete the default for FFA to no, and make it again as fig-compatible as possible. _ need to replace all references to the DESTROY-bit, mostly checks are changed to the new word PFE_IS_DESTROYER. _ add destroyer_RT near forget_word API in dict-sub. _ change DEFER/IS/DOER/MAKE to use PFA[1] always. In non-fig mode, simpel leave PFA[0] blank.... and warn about usage. _ add a test/check for defer/make _ add fixup for darwin, add fixup for newest crossmingw compiles. _ add manpage generation rule for pfe-config ... a debian requirement 2001-05-18 - <guidod@gmx.de> _ replace all HAVE_ defines by PFE_HAVE_ defines (except: HAVE_VERSION_H HAVE_CONFIG_H) hopefully all config.h defs are now changed to pfe-config.h defs. _ merge with pfe-30/README _ dnw found a superfluous ifdef in dstrings-ext, thanks. _ on darwin-1.3, a patch to generated libtool can build a .so-sharedlib of pfe, but the main-exe pfe is bound statically, "otool -L pfe" does not reveal a dependency on libpfe. Actually, the darwin-native sharedlibs are called ".dylib", not ".so". Same for the loadm-functionality of pfe - the configuration did not find any known unix'ish dlopen functions, so the pfe can not dynaload the created external modules anyway. Therefore, ATM, just use a configure --without-modules --disable-shared ... and if you really want to look at the upcoming sharedlib of pfe on darwin, then patch the libtool after configure with mv libtool libtool.gen sed -e '/archive_cmds=/s:\\\\":\\":g' libtool.gen > libtool 2001-05-17 - <guidod@gmx.de> _ fix some issues that come from error-messages from the borland 5.5 compiler. _ strncmpi was still used in some places, instead let them all use p4_strncmpi and have it defined in core-sub.h : core-sub.c dict-sub.c dl-ext.c environ-ext.c locals-ext.c option-ext.c _ remove check for HAVE_CONFIG_H from _missing.h and let the HAVE_-checks become PFE_HAVE_-checks. _ change _missing.c HAVE_ to PFE_HAVE_-checks. _ Borland does not use __FUNCTION__, so we have to change logging.h _ main-sub.c: locale.h/unistd.h HAVE_ -> PFE_HAVE_ _ memory-sub.c: P4_ADD does not work in here with bcc. _ some void*-calculation must become char*-calculations. p4_to_link paren_dict_limit_ _ real windows has timeval in winsock.h ... need to include it in posix-ext.c _ real windows does not have unistd.h ... instead it uses io.h for the basic file functions. _ fix p4_compiles/fx_compile issues in shell-os-ext _ add <io.h> to _missing.h _ posix-ext.c needs PFE_HAVE_WINBASE... _ need direct.h in shell-os-ext _ use pocket_filename in p4_chdir (shell-os-ext) _ use PFE_RETSIGTYPE instead of RETSIGTYPE in signals-ext _ look for an env-option to suppress install_signals _ a few borland-c-55/Makefile fixes _ the bcc32 pfe.exe is now there, but it is wrong and throws before one can get to the line-ed. 2001-05-16 - <guidod@exgate.tek.com> _ fixup cygwin32/NT compilation (not yet through) _ fixup vxworks/CD bug 2001-05-16 - <guidod@gmx.de> _ dstrings becomes an external that is compiled and installed by default. Remove --with-dstrings-ext _ apply some fixups for dstrings that I did not yet been able to do with the last week or so. 2001-05-15 - <guidod@exgate.tek.com> _ test round 1: hook --str-buffer-size as generic and let dstrings-ext use it. dstrings-ext becomes fully decoupled, no external module yet. (31.22) _ test round 2: hook into k12xx system _ make offline pfe.exe a possibility. 2001-05-14 - <guidod@exgate.tek.com> _ complete the option-ext system, hook it into the stdc arg-scanning to do generic option-recognition, test it, and make the "map"-facilities to use it. _ start off dl-internal.c, extend paren_loadm to see the internal module-wordsets in that table, and hook into environment_Q to try to load a module if an "-ext"-question is seen and not fullfilled by the first run over environ_wl. (move environment_Q implementation to environ-ext.c) 2001-05-12 - <guidod@exgate.tek.com> _ start option-ext system. _ tests to make it seemingly work _ hook it into environment-wl 2001-05-10 - <guidod@exgate.tek.com> _ pfe.h changed, for new SWIG version as of .31.x _ tests for vxworks environment - need to recompile everything since LOADLIST-feature has been removed. 2001-05-09 - <guidod@gmx.de> _ remove all references to p4_tick and replace with their respective calls to p4_tick_nfa or p4_tick_cfa - files: core-ext debug-ext misc-ext module-ext struct-ext toolbelt-ext tools-ext useful-ext your-ext 2001-05-08 - <guidod@gmx.de> _ change exception system - a wordset can now declare an entry that sets a pair of exception-number and descriptive string. _ the pfe-specific (memstack/dstrings) exception-numbers are rewritten as wordset-entries, the old secondardy-table in excpetion-sub is removed and replaced by a linked-list search. _ found a severe bug introduced at dict_allocate-changes (.12-.15) where I forgot declare the memory section of the TIB. The "make check" did not jump on this bug but the first interactive tests (from above, a "-2049 throw" test) did reveal it. All versions since atleast .15 (.14?) are affected. 2001-05-08 - <guidod@gmx.de> _ some cleanups in debug-ext and main-sub _ clean mis-changes in dstrings-ext _ clean some calls in dstrings-ext that should read 'FX(func)'. _ add enable_stackthreaded declaration in def-comp to point into the direction that I like to go with the fcode-declarators. _ clean up Semant/Semant2 and compile/compile1/compile2 which did create error-hell with the free-borland compiles on windows. ... using option --with-user-config=_debug_borland_ansi_compilers=1 and declaring the semant-structures in def-comp.h ... mostly changing some FX_COMPILE1 to FX_COMPILE in: core-ext double-ext exception-ext engine-sub locals-ext string-ext forth-83-ext forth-usual-ext misc-ext useful-ext your-ext dstrings-ext toolbelt-ext _ remove WITHDEF_REGS from $(OPTIM) in Makefile.am _ add depcomp to DISTFILES in toplevel-Makefile 2001-05-07 - <guidod@gmx.de> _ change dict_allocate - use a new helper routine in memory-sub that carves the stacks from dictlimit down. The dict_allocate of the floating-stack is now moved to the floating_init routine. The main-sub dict_allocate routine does not contain a series of function-calls to our helper routine. _ can we make dstrings-ext to use p4_dict_allocate ?? and is it better to have an implicit destroyer. _ when to move the other dict_allocate parts to their respective wordset' init-routines ?? 2001-05-06 - <guidod@gmx.de> _ change struct p4_Decomp dot skips from an integer to a function pointer of a type that had been introduced in the decomp-split. The old integer-enum is changed to a series of defines of those integers with the correct types so that the old macros still work. _ make the default to call the skips member if it is set. _ remove a few skips-ids, move the defintions to their files where they are used, and let the corresponding compiles-struct reference the functions directly there: P4_SKIPS_FLOAT -> p4_lit_float_SEE -> floating-ext.c P4_SKIPS_PSTRING -> p4_lit_pstring_SEE -> dstring-ext.c P4_SKIPS_PSTRING_BACK_TICK -> p4_lit_pstring_back_tick -> .. _ marg_execution and make_str_frame_execution go from debug-ext to dstrings-ext where they belong. As a real novelty - the execution gets its own CS which gets compiled by its execution-maker that is not actually named in that CS. Let's see if that works... _ move engine-sub interpret helpers to their wordsets, these are interpret_float to floating-ext and interpret_dstrings to dstrings-ext ... and of course, now we need init/deinit routines in these wordsets to register the interpret-routines. _ introduce abort-vectorize-field, so engine-sub can get rid of references to floating-ext and dstrings-ext. Again, the vector-fields must be inited/deinited in their corresponding prim-wordsets. _ move the semicolon-execution of dstrings's margs to its wordset. Use a nesting-routine for the semicolon functional-vector that calls the outer semicolon-routine. May be this defines margs even within a DOES> code part. _ move xalloc routine for PFE.dstrings from main-sub to the init-routine in dstrings-ext. The dstrings-ext wordset is now largely ready to be compiled as an external module - the only exception is for the option processing and the exception-ids. As mac-os-x support is not fully tested with external modules, I'll keep it as it is. 2001-05-05 - <guidod@gmx.de> _ found a severe bug in load_llist routine but we wanted to replace the functionality by load_words anyway. The func load_llist is removed, and the module-p4_MODULE helper-func (compiled by P4_MODULE_LIST) does return a P4WORDS-adress instead of a P4_LOADSTRUCT. The definition of a LOADSTRUCT is now obsolete and the def-words macros will be removed RSN. 2001-05-04 - <guidod@gmx.de> _ p4_dlopen to p4_dlopenext int api change, dlfcn-ext is now renamed to dl-ext completly. next step will be to adapt to the ltdl-api which requires testing a dlfindsym operation on vxworks first. 2001-05-03 - <guidod@gmx.de> _ start make generation 31 _ dlfcn-sub.c is no more, and so is dlfcn-sub.h, generated until now and used only in dlfcn-ext.c. _ debugged the debug-decomp-split style. 2001-04-27 - <guidod@gmx.de> _ starting off generation 31 _ rename Changelog to ChangeLog - which is the recommended name. _ split dlfcn-sub.c into pieces that are loaded by a -def file. the new fileset is dl-def.c dl-none.c dl-dlfcn.c dl-hpux.c and of course dl-vxworks.c. The dlfcn-ext.c will be aligned in its naming as soon as the dlfcn-sub api is dismissed. _ add a main-def.c - currently it just includes main-stdc.c but it offers us the possibility to set the main-type with a configure-call. _ rename configure.in to configure.ac - we will strictly rely on the 2001-year series of autoconf (2.49/2.50+) _ add *.ac to the top-level Makefile distexts. _ sourceforge download-server for pfe-packages is now http://prdownloads.sourceforge.net/pfe/pfe-%version.tar.gz _ the mark>/resolve> change in misc-ext.c -------------------------------------------------------------------------- 2000-04-24 - <guidod@gmx.de> * dstrings patch by david.n.williams - applied. * tag v96 2000-04-23 - <guidod@gmx.de> * did a lot of test with the various autoconf automake libtool version. Sadly, libtool does not contain the libsdl patches to crosscompile to mingw32, so I have to stick to the old libtool. Automake 1.4e cvs-version has quite a few bugs, so we update to automake 1.4d release. Autoconf cvs prerelease is quite fine, however some macros in the aclocal-archive had to be updated. Now we have the chance to test with the features from newer autoconf/automake atleast. And to use enhanced features from next autoconf-generation atleast. * --with-modules ... because we can not anymore just try to build the modules for crosscompile mingw32 target. * add `pocket-pad` where there is `th'pocket` * tag v95 2000-04-01 - <guidod@gmx.de> * well, with the ltmain.sh/ltconfig libsdl, it works now, but it does not seem to be able to resolve the module's symbols with the pfe.dll - and that's needed for making module dlls. 2000-03-31 - <guidod@gmx.de> * lots of tests to build a pfe.dll, and quite a few changes to pfe/Makefile.am and pfe/configure.in * these are now dependent on $host cygwin/mingw, let's see later if that assumption is correct. 2000-03-30 - <guidod@gmx.de> * use AC_SPEC_PACKAGE_VERSION - changes to pfe/configure.in and pfe.spec * new experience with rpm.spec files made me do a major rewrite of pfe.spec * change usage of CFLAGS/INCLUDES in pfe/Makefile.am ... an experience from Makefile.am files for external-built pfe-modules. * start using AC_PROG_CC_WARNINGS * clean out optlevel defines * factor out gcc -pipe check. * delete comments for -Wshadow and -Waggregate-return * remove -g addon, and set -Wl,-S at LDFLAGS 2000-03-26 - <guidod@gmx.de> * update forthprimer.pdf * coldboot module section in engine-sub has still not updated to load_words for MODULE2 MODULE3 |