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:andversusassembler:and. - Non-parsing syntax: Voor het omgaan met value-flavoured en defer-flavoured woorden (v en d in de volgende voorbeelden):
->vvoor to v;+>vvoor +to v;'vvoor addr v;@>dvoor action-of d;=>dvoor 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.
.szelf 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(gebruikid.)does-handler!(implementatie gewijzigd, gebruikset-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, gebruikc-library ... end-c-library)<interpretation interpretation>,<compilation compilation>,create-interpret/compile(vervangen doorset->int,set-compsem)naligned(gebruik*aligned)name>comp,name>int(gebruikname>compile,name>interpret)path-allot(gebruikdup , 0 , allot)sl@,sw@,ul@,uw@(gebruikl@,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.). helptoont 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,,bt1bt,???,WTF??,!!FiXME!!,replace-word,,VariableValue,+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-regis overbodig). - Rapportage van prestatie- en functionaliteitsproblemen aan het einde van "make".
autogen.shis 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:REQUIREDetc. (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:
0xis een hex-prefix:0xffen0XfFproduceren nu 255 (decimaal).#is een decimaal-prefix:#10produceert nu 10 (decimaal).- Tekens voor het voorvoegsel worden nu geaccepteerd, bijv.
#-50. 'handelt nu slechts één (x)char af:'abwordt 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 opOPEN-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,\zen beperken hex en octal karakter-specificaties.OPEN-FILEmetW/Omaakt geen bestanden meer aan of truncate deze niet.OPEN-LIBherkent nu~aan het begin, net alsOPEN-FILE.TRY...ENDTRYis significant gewijzigd; compatibiliteitsbestanden zijn beschikbaar.- De disassembler (
DISCODE) kan nugdbgebruiken 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_. libccC-functie call interface (vereistlibtoolengccop runtime).- Alternatief: ongedocumenteerde
libffi-gebaseerde interface.
Bibliotheken:
depth-changes.fs: rapporteert stack-diepte wijzigingen tijdens interpretatie.ans-report.fsrapporteert nu CfV-extensies.fsl-util.4th(ongedocumenteerd).regexp.fsvoor reguliere expressies (ongedocumenteerd).complex.fsvoor complexe getallen (ongedocumenteerd).fft.fsvoor 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.fsvoor profiling (ongedocumenteerd, incompleet).endtry-iferror.fs,recover-endtry.fsom de overgang naar de nieuweTRYte vergemakkelijken.test/tester.fs: werkt nu met FP-getallen (ongedocumenteerd).test/ttester.fs: versie vantester.fsmet verbeterde interface (T{...}T).compatbibliotheek: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
int128types 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(LASTXTis deprecated). - Omgeving: Optionele ondersteuning voor een C-interface gebouwd op de
ffcallbibliotheken. - 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 eenALLOCATEuit voor de string (deze blijven bestaan totBYE).- 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-itcvoor 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.
vitags bestanden kunnen worden gebouwd mettags.fs.gforth.elis 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.fsnaarVmgen.
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-LINEinterpreteert nu LF, CR, en CRLF als newlines. SEEdisassembleert nu primitives.>HEAD(aka>NAME) geeft nu 0 terug bij falen.- De syntax van
primis 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_SIGINFOsemantics zijn er preciezere foutrapporten voorSIGSEGVenSIGFPE. - 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. gforthengforthmizijn nu meer GNU-standaard compliant.- Nieuwe command-line optie:
--die-on-signal. - Fouten worden nu naar
stderrgestuurd. Stdoutis 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:
F0hernoemd naarFP0; aliasesSP0,RP0,LP0toegevoegd.PARSE-WORDhernoemd naarSWORD.- Toegevoegd:
FPICK,EXCEPTION. S" gforth" ENVIRONMENT?geeft nu de versie-string.- Wijziging in representatie van types in het
structpackage.
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.fiis 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.fsmaakt output paging mogelijk.- Toegevoegd:
compat/directory met ANS implementaties van Gforth-functies. - Toegevoegd: kleine multitasker (
tasker.fs). - Toegevoegd: object-georiënteerd programmeren via
oof.fsenobjects.fs. - Toegevoegd:
ans-report.fs.
Nieuwe woorden:
POPENenPCLOSEgewijzigd naarOPEN-PIPEenCLOSE-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:
EMITenTYPEwerken nu via file words.HEADERslaat nu de compilatie-wordlist op in de header;REVEALonthult 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.
Groetjes,