Gforth 1.0 Nieuws

Zichtbare wijzigingen tussen Gforth 0.7.x en 1.0

Deze tekst vermeldt woorden die voor het eerst in de documentatie verschijnen; sommige waren al eerder beschikbaar, maar waren toen nog niet gedocumenteerd.

Stabiliteit

Er is nu gedocumenteerd welke woorden bedoeld zijn voor permanente ondersteuning en welke niet. Zie hiervoor Stability Goals.

Belangrijkste functies

Tekstinterpreter

De tekstinterpreter kan nu meer herkennen:

  • Extra manieren om literals in broncode te schrijven: geschaalde notatie voor FP-getallen (bijv. 6k5, 23%), strings ("string"), xt's (` word `), nt's ( word ) en body-adressen (<word> <word+8>`). Zie Literals in source code.
  • Vocabulaires: Je kunt het vocabulaire (of meerdere vocabulaires) van een woord specificeren, bijvoorbeeld forth:and versus assembler:and.
  • Non-parsing syntax: Voor het omgaan met value-flavoured en defer-flavoured woorden (v en d in de volgende voorbeelden): ->v voor to v; +>v voor +to v; 'v voor addr v; @>d voor action-of d; =>d voor is d. Zie rec-to.
  • Omgevingsvariabelen: Inhoud van omgevingsvariabelen kan worden opgevraagd via ${LANG}.

De tekstinterpreter kan worden uitgebreid met meer herkenners: recs, rec-name, rec-local, rec-scope, rec-number, .-is-dcell?, rec-float, rec-complex, rec-string, rec-to, rec-dtick, rec-tick, rec-body, rec-env, rec-meta, rec-forth, rec-sequence:, get-recs, set-recs, rec-none, translate-name, translate-cell, translate-dcell, translate-float, translate-complex, translate-string, scan-translate-string, translate-env, translate-to, rec-filter, rec-forth-nt?, translate:, interpreting, compiling, postponing, ?rec-found.

IDE-functies

  • Broncode: Toon de broncode van een woord (locate, browse).
  • Gebruik: Toon waar een woord wordt gebruikt (where, nw, bw, ww).
  • Backtraces: Toon bronlocaties die doorzocht kunnen worden (nt, bt, tt).
  • Editor: Optioneel gebruik van een editor (edit, g, gg, whereg).
  • Overige woorden: fancy-after-l, xt-locate, l, n, b, before-locate, after-locate, ll, short-where, expand-where, prepend-where, unused-words.
  • Smart .s: Maakt een inschatting van wat stack-items betekenen en toont deze op passende wijze. .s zelf blijft "dom".
  • Statusregel: Onderaan de terminal toont een statusregel de BASE, stacks en de zoekvolgorde. (-status, +status).

Multi-Tasking

Ondersteuning voor meerdere cores of hardware-threads: newtask, task, newtask4, stacksize, stacksize4, initiate, execute-task, kill-task, kill, stop, stop-ns, stop-dns, thread-deadline, halt, sleep, wake, restart, pause, auser, uallot, up@, user's mutex lock, unlock, critical-section, atomic!@, atomic+!@, atomic?!@, barrier.

  • Message queues: Bieden een manier om communicatie te combineren met synchronisatie van taken (vergelijkbaar met het actor-model): send-event, ?events, event-loop.
  • Cilk: Nuttig voor het verdelen van werk over taken: cores, cilk-init, spawn, spawn1, spawn2, cilk-sync, cilk-bye.

C Interface

Verbeteringen aan de C-interface, inclusief callbacks: c-value, c-variable, c-funptr, c++-library-name, c++-library, add-libpath, add-framework, add-incdir, add-cflags, add-ldflags, c-callback, c-callback-thread, callback#.

Dictionary en Geheugen

  • Secties: Het dictionary kan nu meer dan één sectie hebben, elk met een eigen dictionary-pointer. Dit maakt allocatie mogelijk zonder andere secties te beïnvloeden (bijv. voor geneste definities). Zie Sections. Woorden: next-section, previous-section, extra-section, .sections.
  • Postpone: Meerdere woorden uitstellen met ]]...[[.
  • Value- en defer-flavoured fields: value:, cvalue:, wvalue:, lvalue:, scvalue:, swvalue:, slvalue:, 2value:, fvalue:, sfvalue:, dfvalue:, zvalue:, $value:, value[]:, $value[]:, defer:.
  • Per-task values en defers: uvalue, udefer.
  • Closures: Execution tokens voor code met data: free-closure, [n:l, [d:l, [f:l, [n:d, [d:d, [f:d, [n:h, [d:h, [f:h, [n:h1, [d:h1, [f:h1, [{:, :}l, :}d, :}h, :}h1, :}xt, >addr, <{:, ;>.

Word Header Layout

Nieuwe layout voor word headers, wat de volgende mogelijkheden biedt:

  • Gedrag van woorden wijzigen: set-does>, set-compsem, set->int, set->comp, set-name>string, set-name>link.
  • Gebruik van code-adres in plaats van xt: set-execute. Nieuwe code-adressen hiervoor: dovalue:, dodoes:, doabicode:.
  • User-defined "to" etc.: to-table:, to-class:, >uvalue, set-to.
  • Implementatie wijzigen: set-optimizer.
  • Non-postfix syntax: compsem:, intsem:, opt:.
  • Woorden maken vanuit een template: create-from, reveal, reveal!, noname-from.
  • Toepassen van set-does> op eerder gedefinieerde woorden: make-latest.
  • Introspectie: .hm, immediate?.

Prestaties

Prestaties zijn nu vergelijkbaar met SwiftForth.

  • IP-update optimalisatie: Versnelt programma's die gedomineerd worden door loops met een factor 2.
  • Literal stack: Maakt constant folding en andere optimalisaties mogelijk.

Woorden die niet langer gedocumenteerd zijn

Veel van deze woorden zijn nog aanwezig in Gforth 1.0, maar kunnen in de toekomst worden verwijderd.

  • .name (gebruik id.)
  • does-handler! (implementatie gewijzigd, gebruik set-does>)
  • /does-handler (implementatie gewijzigd, zie Carnal words)
  • @local#, f@local#, laddr#, lp+!# (vervangen door @localn, f@localn, lp+n, lp+!)
  • clear-libs (interface gewijzigd, gebruik c-library ... end-c-library)
  • <interpretation interpretation>, <compilation compilation>, create-interpret/compile (vervangen door set->int, set-compsem)
  • naligned (gebruik *aligned)
  • name>comp, name>int (gebruik name>compile, name>interpret)
  • path-allot (gebruik dup , 0 , allot)
  • sl@, sw@, ul@, uw@ (gebruik l@, l>s;, w@, w>s;, l@;, w@)

Intern en daarom niet langer gedocumenteerd: ;s, block-position, cfalign, cfaligned, compile-lp+!, empty-buffer, name?int, s>number?, s>unumber?, save-buffer.

Overige aanvullende functies

Algemeen

  • De return stack kan nu interpretatief worden gebruikt (behalve voor het doorgeven van data naar of uit INCLUDED, EVALUATE, etc.).
  • help toont de documentatie van woorden of documentatie-nodes. Overige informatieve woorden: authors, license.
  • Boolean flags: select.

Rekenen

  • Single precision: umin, umax.
  • Expliciet floored, symmetric, of unsigned division: /s, /f, u/, mods, modf, umod, /mods, /modf, u/mod, du/mod, /s, /f, u/, /mods, /modf, u/mod, ud/mod.
  • Two-stage division: staged/-size, /f-stage1m, /f-stage2m, modf-stage2m, /modf-stage2m, u/-stage1m, u/-stage2m, umod-stage2m, u/mod-stage2m, staged/-divisor.
  • Bitwise operaties: mux, arshift, dlshift, drshift, darshift, >pow2, log2, pow2?, ctz, wrol, wror, lrol, lror, rol, ror, drol, dror.
  • Pseudo-random getallen: rnd, random, seed!.

Floating-point

f+, s>f, f>s, fcopysign, ftrunc, v, faxpy, infinity, inf, -infinity, -inf, nan.

Stack Manipulatie

  • Data stack: third, fourth.
  • FP stack: fthird, ffourth, f-rot.
  • Return stack: r'@, rpick, n>r, nr>, f>r, fr>, fr@.

Geheugenbeheer

  • Dictionary allocatie: ->here, w,, l,, x,, xd,, a,, mem, save-mem-dict.
  • Heap allocatie: save-mem, extend-mem, free-mem-var.
  • Groeibare buffers: buffer%, init-buffer, adjust-buffer.
  • Geheugentoegang (generiek): aligned, align.
  • Cells: !@, +!@, cell-, cell/, th, th@, th!.
  • Toegang in 16-bit (w), 32-bit (l), en 64-bit (x, xd) units: w@, w!, l@, l!, x@, x!, xd@, xd!.
  • Byte-volgorde (endianness): wbe, wle, lbe, lle, xbe, xle, xdbe, xdle.
  • Sign-extending: c>s, w>s, l>s, x>s, xd>s.
  • Allocatie: w,, l,, x,, xd,.
  • Groottes: /x.
  • Alignment: waligned, walign, laligned, lalign, xaligned, xalign.
  • Overige groottes: char-, float/, sfloat/, dfloat/.

Xchars, Strings en Tekst

  • Xchars: xc@, xc@+?, xc!+, xc-width, xhold, xc,, invalid-char.
  • Constanten: newline, #tab, #lf, #cr, #ff, #bs, #del, #bell, #esc, #eof.
  • Strings: string-suffix?, scan, scan-back, skip, $split, nosplit?, safe/string, insert, delete, cstring>sstring, capscompare, capsstring-prefix?, capssearch, s+, append.
  • Output omleiden naar string: >string-execute, $tmp.
  • Trings (automatisch geheugenbeheer): ` trings `, !, $@, $@len, $!len, $+!len, $del, $ins, +!c+!, c+!, $free, $init, $iter, $over, $exec, $., $slurp, $slurp-file, $+slurp, $+slurp-file, $variable`.
  • Tring-arrays: ` [] `, $[]!, $[]+!, $+[]!, $[]@, $[]#, $[]map, $[]slurp, $[]slurp-file, $[]., $[]free, $[]variable`.
  • Internationalisering: l", locales, native@, locale@, program, default, locale-csv-out, locale-csv, .locale-csv, locale!, locale:.
  • Substitutie in strings: macros-wordlist, replaces, replacer:, .substitute, $substitute, substitute, unescape, $unescape.
  • Counted strings: place, string.

Control Flow

  • Counted loops: -[do, u-[do, array>mem, mem+do, mem-do, i', delta-i.
  • Eaker's case generalisatie: next-case, ?of, contof.
  • Low-level control flow: cs-drop.
  • Exits: ?exit, execute-exit.
  • Exceptions en warnings: fast-throw, exceptions, ?errno-throw, ?ior, catch-nobt, warning", warnings.

Definities en Structuren

  • Woorddefinities: avariable, buffer:, aconstant.
  • Forward declarations: forward, .unresolved.
  • Values: avalue, 2value, fvalue, +to, addressable:, addr..
  • Inline definities: inline:, ;inline.
  • Quotations: [:, ;].
  • Deferred words: :is, preserve, wrap-xt.
  • Structuren: wfield:, lfield:, xfield:, extend-structure.
  • User-defined stacks: stack, stack:, stack>, >stack, >back, back>, +after, -stack, set-stack, get-stack.
  • No-ops: [noop], noop.

Overige Technische Tools

  • Name tokens: find-name-in, latestnt, xt>name, traverse-wordlist, name>interpret, name>compile, compile-only?, obsolete?, name>link.
  • Literal compilers: lit,, aliteral, 2lit,, flit,, slit,.
  • Status: in-colon-def?, state.
  • Conditionele compilatie: [DEFINED], [UNDEFINED], [I], INT-[I].
  • Interpreter hooks: before-line, before-word, line-end-hook.
  • Input stream: string-parse.
  • Wordlists: in-wordlist, in, cs-wordlist, cs-vocabulary, .voc, wordlist-words, mwords, map-vocs.
  • Conversie: >float1, holds.
  • Omgevingsvragen: max-xchar, xchar-maxmem, os-type.
  • Bestanden: \\\, .included, +fmode, file-eof?, outfile-id, infile-id.
  • Directories: basename, dirname, open-dir, read-dir, close-dir, filename-match, get-dir, set-dir, =mkdir, mkdir-parents.
  • Zoekpaden: absolute-file?, .fpath, file>fpath, file>path.
  • Numerieke output: h., dec.r.
  • Floating-point output: fp., e., e.p, e.exact.
  • Terminal output (kleuren): at-deltaxy, default-color, error-color, error-hl-inv, error-hl-ul, warning-color, info-color, success-color, input-color, status-color, compile-color, postpone-color, light-mode, dark-mode, uncolored-mode, magenta-input, default-input.
  • Single-key input: key-ior, xkey?, ekey>xchar, k-enter, k-backspace, k-tab, k-winch, k-pause, k-mute, k-volup, k-voldown, k-sel, k-eof, fkey., simple-fkey-string.
  • CSV input: read-csv, csv-separator, csv-quote, .quoted-csv.
  • Locals: {:, |, :}, z:, z^, xt:, @localn, f@localn, !localn, lp+n, lp+!.
  • Mini-OOF2: >o, o>, rec-moof2, :method.
  • Reguliere Expressies: (( )), charclass, +char, -char, ..char, +chars, +class, -class, c?, -c?, \d, \s, .?, -\d, -\s, \^, \$, str=?, =", { }, {++ ++}, { }, {+ +}, //, {{ || }}, \( \), \0, s>>, >>, <<, <<", s//, //s, //o, //g, FORK, JOIN, ` ? , - .
  • Compiled code inspectie: xt-simple-see, xt-see-code.
  • Debugging: debug-fid, once, bt, 1bt, ???, WTF??, !!FiXME!!, replace-word, Variable, Value, +ltrace, -ltrace, #loc.
  • Code Coverage: .coverage, annotate-cov, bw-cover, color-cover, save-cov, load-cov, nocov[ ]nocov, cov+, ?cov+, cov%, .cover-raw.
  • Assembly taal: abi-code, ;abi-code.
  • Disassembler: disasm2, intel-syntax, at&t-syntax, disasm, disasm-gdb.
  • Tijd: ns, >time&date&tz, ntime.
  • Image saving: 'image, process-option.
  • MINOS2: actor, widget, caller-w, active-w, act-name$, clicked, scrolled, touchdown, touchup, ukeyed, ekeyed, ?inside, focus, defocus, entered, left, show, hide, get, set, show-you, parent-w, act, name$, x, y, w, h, d, gap, baseline, kerning, raise, border, borderv, bordert, borderl, w-color, draw-init, draw, split, lastfit, hglue, dglue, vglue, hglue@, dglue@, vglue@, xywh, xywhd, !resize, !size, dispose-widget, .widget, par-split, resized, >animate, color:, new-color:, text-color:, text-emoji-color:, fade-color:, text-emoji-fade-color:, re-color, re-text-color, re-emoji-color, re-fade-color, re-text-emoji-fade-color, vp-top, vp-bottom, vp-left, vp-right, vp-reslide, vp-needed.
  • Overige woorden: f.s-precision, fclearstack, sh-get, synonym, out.

Gforth EC

Er is sinds Gforth 0.7 geen werk meer verricht aan Gforth EC. We raden aan om Gforth 0.7 te gebruiken voor Gforth EC, maar we verwelkomen bugrapporten of succesverhalen via onze git head.

---

Historiek van wijzigingen

Wijzigingen tussen 0.6.2 en 0.7.0

Vereisten: Op runtime is libtool en gcc vereist (voor de libcc C-interface) en gdb (voor de disassembler (SEE)) op sommige platforms.

Installatie:

  • Ondersteuning voor DESTDIR, POSTINSTALL, INSTALLSCRIPT.
  • Automatische prestatie-optimalisatie tijdens het bouwen (--enable-force-reg is overbodig).
  • Rapportage van prestatie- en functionaliteitsproblemen aan het einde van "make".
  • autogen.sh is nu beschikbaar.

Licentie: Gewijzigd naar GPLv3.

Bugfixes:

  • Werkt nu met address-space randomization.
  • De single-step debugger werkt weer in sommige engines.
  • Diverse andere correcties.

Ports:

  • AMD64, ARM, IA-64 (Itanium): betere prestaties.
  • PPC, PPC64: disassembler en assembler.
  • Gforth EC: R8C, 4stack, misc, 8086 werken.
  • MacOS X: betere ondersteuning.

Aanroeping: Nieuwe flags: --ignore-async-signals, --vm-commit (standaard overcommit), --print-sequences.

Forth 200x:

  • X:extension-query: geeft true voor alle geïmplementeerde extensies.
  • X:required: REQUIRED etc. (niet nieuw).
  • X:defined: [DEFINED] en [UNDEFINED].
  • X:parse-name: PARSE-NAME (nieuwe naam).
  • X:deferred: deferred words (nieuw: DEFER@, DEFER!, ACTION-OF).
  • X:structures: +FIELD, FIELD:, FFIELD:, CFIELD:, etc.
  • X:ekeys: nieuw: EKEY>FKEY, K-SHIFT-MASK, K-CTRL-MASK, K-ALT-MASK, K-F1...K-F12.
  • X:fp-stack (niet nieuw).
  • X:number-prefixes (gedeeltelijk nieuw, zie hieronder).

Getal-voorvoegsels:

  • 0x is een hex-prefix: 0xff en 0XfF produceren nu 255 (decimaal).
  • # is een decimaal-prefix: #10 produceert nu 10 (decimaal).
  • Tekens voor het voorvoegsel worden nu geaccepteerd, bijv. #-50.
  • ' handelt nu slechts één (x)char af: 'ab wordt niet meer geaccepteerd; 'a' produceert nu 97 (decimaal).

Unicode ondersteuning:

  • Toegevoegd: xchars woorden voor het omgaan met variabele-breedte multi-byte tekens.
  • Ondersteuning voor 8bit (ISO Latin 1) en UTF-8 voor xchars.

Nieuwe woorden:

  • \C, C-FUNCTION, C-LIBRARY, END-C-LIBRARY, C-LIBRARY-NAME (libcc C-interface).
  • LIB-ERROR (aanvulling op OPEN-LIB).
  • OUTFILE-EXECUTE, INFILE-EXECUTE, BASE-EXECUTE (beperkte wijziging van globale status).
  • 16-bit en 32-bit geheugentoegang: UW@, UL@, SW@, SL@, W!, L!, W@, L@, /W, /L.
  • NEXT-ARG, SHIFT-ARGS (verwerking van OS command-line argumenten).
  • NOTHROW (voor backtrace controle).
  • FTRUNC, FMOD (ongedocumenteerd).
  • SEE-CODE, SEE-CODE-RANGE (toon gegenereerde dynamische native code).

Verbeteringen aan bestaande woorden:

  • S", ." ondersteunen nu \l, \m, \z en beperken hex en octal karakter-specificaties.
  • OPEN-FILE met W/O maakt geen bestanden meer aan of truncate deze niet.
  • OPEN-LIB herkent nu ~ aan het begin, net als OPEN-FILE.
  • TRY...ENDTRY is significant gewijzigd; compatibiliteitsbestanden zijn beschikbaar.
  • De disassembler (DISCODE) kan nu gdb gebruiken om code te disassembleren.
  • Niet-geïnitialiseerde deferred words geven nu een waarschuwing bij uitvoering.
  • Divisie is nu floored (uitschakelen met configure --enable-force-cdiv).
  • Gforth (niet gforth-fast) rapporteert nu op alle platforms divisie door nul en overflow bij divisie.

Nieuw gedocumenteerde woorden: S>NUMBER?, S>UNUMBER?, EKEY (namen: K-LEFT, K-RIGHT, K-UP, K-DOWN, K-HOME, K-END, K-PRIOR, K-NEXT, K-INSERT, K-DELETE), CLEARSTACKS, FORM, omgevingsvariabele GFORTHSYSTEMPREFIX.

C-interface:

  • Geëxporteerde symbolen beginnen nu met gforth_.
  • libcc C-functie call interface (vereist libtool en gcc op runtime).
  • Alternatief: ongedocumenteerde libffi-gebaseerde interface.

Bibliotheken:

  • depth-changes.fs: rapporteert stack-diepte wijzigingen tijdens interpretatie.
  • ans-report.fs rapporteert nu CfV-extensies.
  • fsl-util.4th (ongedocumenteerd).
  • regexp.fs voor reguliere expressies (ongedocumenteerd).
  • complex.fs voor complexe getallen (ongedocumenteerd).
  • fft.fs voor Fast Fourier Transform (ongedocumenteerd).
  • wf.fs, een Wiki-implementatie (ongedocumenteerd).
  • httpd.fs, een webserver (ongedocumenteerd).
  • status.fs, toont interpreter status in aparte xterm (ongedocumenteerd).
  • profile.fs voor profiling (ongedocumenteerd, incompleet).
  • endtry-iferror.fs, recover-endtry.fs om de overgang naar de nieuwe TRY te vergemakkelijken.
  • test/tester.fs: werkt nu met FP-getallen (ongedocumenteerd).
  • test/ttester.fs: versie van tester.fs met verbeterde interface (T{...}T).
  • compat bibliotheek: compat/execute-parsing.fs.

Snelheidsverbeteringen:

  • Automatische prestatie-tuning tijdens het bouwen.
  • Statische stack caching (goede versnelling op PPC).
  • Mixed-precision divisie is nu sneller.
  • Ondersteuning voor int128 types op AMD64.
  • Workarounds voor gcc prestatie-bugs (in het bijzonder PR 15242).
  • Branch target alignment (goede versnelling op Alpha).

Wijzigingen tussen 0.6.1 en 0.6.2

  • Bugfixes: Gforth-0.6.2 compileert nu met gcc-3.3.
  • Nieuwe woorden: LATEST, LATESTXT (LASTXT is deprecated).
  • Omgeving: Optionele ondersteuning voor een C-interface gebouwd op de ffcall bibliotheken.
  • Diversen: Gforth-fast gebruikt nu statische superinstructions (versnelling op sommige platforms).

Wijzigingen tussen 0.6.0 en 0.6.1

  • Bugfixes: Installatie op big-endian machines werkt nu correct.

Wijzigingen tussen 0.5.0 en 0.6.0

Gedragswijzigingen:

  • S": interpretatief gebruik voert nu een ALLOCATE uit voor de string (deze blijven bestaan tot BYE).
  • Lange woordnamen (512MB op 32-bit systemen) worden nu ondersteund (wijziging in header-formaat).
  • Nieuwe threaded code uitvoeringsmethode: primitive-centric, hybride direct/indirect threaded, met dynamische superinstructions (typische versnelling op Athlon: factor 2). Nieuwe engine gforth-itc voor backwards-compatibiliteit.

Operationele omgeving:

  • Standaard dictionary grootte is nu 4MB.
  • Ondersteuning voor grote bestanden op OS'en die dit ondersteunen (>2GB op 32-bit machines).
  • Gforth gaat nu beter om met broken pipes.
  • vi tags bestanden kunnen worden gebouwd met tags.fs.
  • gforth.el is grotendeels herschreven.
  • Nieuw image-bestandsformaat.

Nieuwe woorden:

  • Keyboard input: EDIT-LINE, K-PRIOR, K-NEXT, K-DELETE.
  • File input: SLURP-FILE, SLURP-FID.
  • Programmeer-tools: ID., .ID, WORDLIST-WORDS, SIMPLE-SEE.
  • Conditionele uitvoering: [DEFINED], [UNDEFINED].
  • Definities: CONST-DOES>, ]].
  • Input stream: PARSE-WORD, EXECUTE-PARSING, EXECUTE-PARSING-FILE.
  • String vergelijking: STR=, STR<, STRING-PREFIX?.
  • String literals: S", .", "-PARSE.
  • Floating point output: F.RDP, F>STR-RDP, F>BUF-RDP.
  • Diversen: Generalisatie van prims2x.fs naar Vmgen.

Wijzigingen tussen 0.4.0 en 0.5.0

Gedragswijzigingen:

  • Er zijn nu twee engines: de fast engine (gforth-fast) en de debugging engine (gforth). De debugging engine ondersteunt precieze backtracing voor signalen, maar is 1-2 keer trager.
  • Block-bestanden beginnen nu standaard bij block 0 (voorheen block 1).
  • Gforth vertaalt newlines niet langer naar LFs bij het lezen. READ-LINE interpreteert nu LF, CR, en CRLF als newlines.
  • SEE disassembleert nu primitives.
  • >HEAD (aka >NAME) geeft nu 0 terug bij falen.
  • De syntax van prim is gewijzigd: stack-effecten staan nu tussen haakjes, tabs zijn insignificant.

Operationele omgeving:

  • Gforth produceert nu een backtrace bij het opvangen van een exception.
  • Op platforms met Unix 98 SA_SIGINFO semantics zijn er preciezere foutrapporten voor SIGSEGV en SIGFPE.
  • Gforth produceert nu exit code 1 bij een fout in batch-verwerking.
  • Gebruik van gforthmi --application ... is mogelijk om een image te bouwen die de command-line direct verwerkt.

Ports:

  • AIX.
  • Versnelling op 604e (PowerPC) en Celeron (gcc-2.95).

Nieuwe woorden:

  • Ontbrekende ANS Forth woorden: EKEY, EKEY?, EKEY>CHAR.
  • Timing: CPUTIME, UTIME.
  • Vector rekenen: V*, FAXPY.
  • FP vergelijking: F~ABS, F~REL.
  • Deferred words: <IS>, [IS].
  • Geneste numerieke output: <<#, #>>.
  • Exception handling: TRY, RECOVER, ENDTRY.
  • Directory handling: OPEN-DIR, READ-DIR, CLOSE-DIR, FILENAME-MATCH.
  • Overig: ]L, PUSH-ORDER.

Diversen:

  • Uitgebreide handleiding.
  • Toegevoegde assemblers en disassemblers voor 386, Alpha en MIPS.

Wijzigingen tussen 0.3.0 en 0.4.0

Operationele omgeving:

  • Padhandling: . aan het begin van het pad staat voor de directory van het dichtstbijzijnde omhullende bestand. ~+ staat voor de working directory.
  • gforth en gforthmi zijn nu meer GNU-standaard compliant.
  • Nieuwe command-line optie: --die-on-signal.
  • Fouten worden nu naar stderr gestuurd.
  • Stdout is ongebufferd indien het een tty is.
  • Omleiding van user input device is nu mogelijk.

Ports:

  • Werkt nu op IRIX en andere MIPS-systemen.
  • Direct threading werkt nu op PowerPC (20% versnelling).
  • Betere ondersteuning voor m68k.
  • Mogelijkheid om executables te maken die het image bevatten.
  • Toevoeging van Embedded Control (EC) ondersteuning voor o.a. Siemens C16x, 8086, 6502, FPGA MISC, 4stack.

Woorden:

  • F0 hernoemd naar FP0; aliases SP0, RP0, LP0 toegevoegd.
  • PARSE-WORD hernoemd naar SWORD.
  • Toegevoegd: FPICK, EXCEPTION.
  • S" gforth" ENVIRONMENT? geeft nu de versie-string.
  • Wijziging in representatie van types in het struct package.

Diversen:

  • Plain text documentatie beschikbaar in doc/gforth.txt.
  • Wordlist structuur gewijzigd.
  • Toevoeging van mini-oof.
  • Bestanden gereorganiseerd in directories.

Wijzigingen tussen 0.2.1 en 0.3.0

  • Detectie van stack overflow via geheugenbescherming op de meeste systemen.
  • gforth.fi is nu volledig relocatable.
  • Win32 ondersteuning.
  • Verbeterde ondersteuning voor embedded controllers.

Wijzigingen tussen 0.2.0 en 0.2.1

  • Bugfixes.

Wijzigingen tussen 0.1beta en 0.2.0

Portabiliteit en Installatie:

  • Ondersteuning voor architecturen met foutieve long longs.
  • Betere ondersteuning voor DOS en andere non-Unix systemen.

Tools:

  • Verbeterde etags ondersteuning.
  • more.fs maakt output paging mogelijk.
  • Toegevoegd: compat/ directory met ANS implementaties van Gforth-functies.
  • Toegevoegd: kleine multitasker (tasker.fs).
  • Toegevoegd: object-georiënteerd programmeren via oof.fs en objects.fs.
  • Toegevoegd: ans-report.fs.

Nieuwe woorden:

  • POPEN en PCLOSE gewijzigd naar OPEN-PIPE en CLOSE-PIPE.
  • Toegevoegd: FORM, ROWS, COLS.
  • Toegevoegd: primitives EMIT-FILE, STDOUT, STDERR.
  • Toegevoegd: TABLEs (case-sensitive wordlists).
  • Toegevoegd: POSTPONE,.
  • Mogelijkheid om willekeurige interpretatie- en compilatiesemantiek te combineren (INTERPRET/COMPILE:).

Wijzigingen aan bestaande woorden:

  • EMIT en TYPE werken nu via file words.
  • HEADER slaat nu de compilatie-wordlist op in de header; REVEAL onthult in die wordlist.
  • ' en ['] geven nu een fout bij compile-only woorden.

--- Auteurs: Anton Ertl, Bernd Paysan Copyright: (C) 1995-2024 Free Software Foundation, Inc. Dit bestand is onderdeel van Gforth en is vrij software onder de GNU General Public License versie 3 of later.