Gforth 1.0은 소스 코드에서 인식하는 리터럴을 늘리고 멀티태스킹과 IDE·디버깅 기능을 추가했다. 안정적으로 지원할 단어와 그렇지 않은 단어를 구분해 문서화했으며, 일부 기존 단어는 더 이상 문서에 실리지 않는다.

  • 인터프리터는 실수 표기 6k5, 백분율 표기 23%, 문자열, 실행 토큰, 단어의 본문 주소 등을 인식한다. 단어 이름 앞에 어휘 목록을 지정하는 기능과 환경 변수 참조도 추가됐다. 자세한 내용은 소스 코드의 리터럴 문서를 참고하면 된다.
  • locate와 browse로 단어의 소스 코드를 확인하고, 관련 사용 위치를 찾을 수 있다. 백트레이스에서 소스 위치를 표시하고 편집기로 열 수도 있다. 터미널 상태 표시줄에는 BASE, 스택, 검색 순서가 나타난다.
  • 여러 코어 또는 하드웨어 스레드에서 작업을 실행하는 멀티태스킹 기능, 태스크 간 통신과 동기화를 위한 메시지 큐, 작업 분배에 쓰는 Cilk 기능이 추가됐다. C 인터페이스에는 콜백 지원도 포함된다.
  • 그 밖에 여러 사전 섹션을 사용해 중첩 정의를 지원하고, 클로저와 태스크별 값·지연 실행 단어를 제공한다. 루프 중심 프로그램의 속도를 높이는 IP 업데이트 최적화와 상수 접기 등 최적화 기능도 소개됐다. 성능 비교 조건은 원문에 구체적으로 제시되지 않았다.

안정성 정책은 Stability Goals에서 확인할 수 있다. 문서에서 빠진 단어 중 일부는 Gforth 1.0에도 남아 있지만 향후 제거될 수 있다. 예를 들어 .name 대신 id., does-handler! 대신 set-does>를 사용하도록 안내한다. Gforth EC 작업은 0.7 이후 진행되지 않았으며, 문서는 Gforth EC에 0.7을 권장하고 git head에서의 버그·성공 보고를 요청한다.

부록: 원문 예시

word```),
- IDE features: Show source code of a word (`locate browse`). show uses of a word (`where nw bw ww`). backtraces show source locations and can be browsed (`nt bt tt`); and use an editor if desired (`edit g gg whereg`); other words: `fancy-after-l xt-locate l n b before-locate after-locate ll short-where expand-where prepend-where unused-words`
- "Smart `.s`: `...` guesses what stack items mean and displays them appropriately. `.s` itself stays dumb.
- A status line at the bottom of the terminal shows `BASE`, stacks, and search order. `-status +status`
- Multi-Tasking on multiple cores or 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 (similar to the actor model) provide a way to combine communication with synchronization of the tasks: `send-event ?events event-loop` Cilk is useful for distributing work across tasks: `cores cilk-init spawn spawn1 spawn2 cilk-sync cilk-bye`
- C interface enhancements, includig 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#`
- The dictionary can now have more than one section, each with its own dictionary pointer, which allows allocation without affecting other sections, used, e.g., for nested definitions. See [Sections](https://gforth.org/manual/1.0/Sections.html). Words: `next-section previous-section extra-section .sections`
- Postpone multiple words with `]]`...`[[`.
- Value-flavoured and defer-flavoured fields: `value: cvalue: wvalue: lvalue: scvalue: swvalue: slvalue: 2value: fvalue: sfvalue: dfvalue: zvalue: $value: value[]: $value[]: defer:`
- Per-task values and defers: `uvalue udefer`
- Closures: Execution tokens for code with 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 <{: ;>`
- New word header layout, and based on that: Modify the behaviour of words: `set-does> set-compsem set->int set->comp set-name>string set-name>link`; using a code addres instead of an xt: `set-execute`; new code addresses for that: `dovalue: dodoes: doabicode:` User-defined `to` etc.: `to-table: n/a to-class: >uvalue set-to` Modify the implementation of words: `set-optimizer` For fans of non-postfix syntax: `compsem: intsem: opt:` Creating a word from a template: `create-from reveal reveal! noname-from` Apply `set-does>` etc. to a word defined earlier: `make-latest` Introspection: `.hm immediate?`
- Performance comparable to SwiftForth IP-update optimization speeds up loop-dominated programs by a factor of 2 Literal stack allows constant folding and other optimizations

No longer documented words

Many of these words are still in Gforth 1.0, but they may be removed
in the future.

- `.name` (use `id.`);
- `does-handler!` (implementation changed, use `set-does>`);
- `/does-handler` (implementation changed, see [Carnal words](https://gforth.org/manual/1.0/Carnal-words.html));
- `@local# f@local# laddr# lp+!#` (replaced by `@localn f@localn lp+n lp+!`);
- `clear-libs` (interface changed, use `c-library` ... `end-c-library`)
- `<interpretation interpretation> <compilation compilation> create-interpret/compile` (replaced by `set->int set-compsem`)
- `naligned` (use `*aligned`)
- `name>comp name>int` (use `name>compile name>interpret`)
- `path-allot` (use `dup , 0 , allot`)
- `sl@ sw@ ul@ uw@` (use `l@ l>s`; `w@ w>s`; `l@`; `w@`).
- Internal and therefore no longer documented: `;s block-position cfalign cfaligned compile-lp+! empty-buffer name?int s>number? s>unumber? save-buffer`

Other additional features

- You can use the return stack interpretively (except for passing data into or out of INCLUDED, EVALUATE etc.)
- `help` shows the documentation of words, or documentation nodes. Other words providing information: `authors` `license`.
- Boolean flags: `select`
- Arithmetic words: Single precision: `umin umax` Explicitly floored, symmetric, or unsigned division words: `/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 operations: `mux arshift dlshift drshift darshift >pow2 log2 pow2?  ctz wrol wror lrol lror rol ror drol dror` Pseudo-random numbers: `rnd random seed!` Floating-point: `f*+ s>f f>s fcopysign ftrunc v* faxpy infinity inf -infinity -inf nan`
- Stack Manipulation: Data stack: `third fourth` FP stack: `fthird ffourth f-rot` Return stack: `r'@ rpick n>r nr> f>r fr> fr@`
- Dictionary allocation: `->here w, l, x, xd, a, mem, save-mem-dict`
- Heap allocation: `save-mem extend-mem free-mem-var`. Growable buffers: `buffer% init-buffer adjust-buffer`.
- Memory access: Generic: `*aligned *align` Cells: `!@ +!@ cell- cell/ th th@ th!` Words for accessing memory in 16-bit (w), 32-bit (l), and 64-bit (x, xd) units: `w@ w! l@ l! x@ x! xd@ xd!` for dealing with different byte orders: `wbe wle lbe lle xbe xle xdbe xdle` for sign-extending: `c>s w>s l>s x>s xd>s` for allocating: `w, l, x, xd,` for sizes: `/x` for alignment: `waligned walign laligned lalign xaligned xalign` for other sizes: `char- float/ sfloat/ dfloat/`
- Xchars: `xc@ xc@+?  xc!+ xc-width xhold xc, invalid-char`
- String and character constants: `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`
- Redirect printing words to a string: `>string-execute $tmp`
- trings(Stringrepresentationwithautomaticmemorymanagement):‘trings (String representation with automatic memory management): `! $@ $@len $!len $+!len $del $ins +!c+! c+! $free $init $iter $over $exec $. $slurp $slurp-file $+slurp $+slurp-file $variable`
- tringarrays:‘tring arrays: `[] $[]! $[]+! $+[]! $[]@ $[]# $[]map $[]slurp $[]slurp-file $[]. $[]free $[]variable`
- Internationalization and localization: `l" locales native@ locale@ program default locale-csv-out locale-csv .locale-csv locale! locale:`
- Substitution 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` Generalize Eaker's `case` to loops: `next-case ?of contof` Low-level control flow words: `cs-drop` Exits: `?exit execute-exit` Exceptions and warnings: `fast-throw exceptions ?errno-throw ?ior catch-nobt warning" warnings`
- Defining words: `avariable buffer: aconstant` Forward declarations: `forward .unresolved` Values: `avalue 2value fvalue +to addressable: addr`. Inline definitions: `inline: ;inline` Quotations: `[: ;]` Deferred words: `:is preserve wrap-xt` Structures: `wfield: lfield: xfield: extend-structure` User-defined stacks: `stack stack: stack> >stack >back back> +after -stack set-stack get-stack`
- No-ops: `[noop] noop`
- 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,`
- Word definition and text-interpreter status: `in-colon-def? state`
- Conditional and looping compilation: `[DEFINED] [UNDEFINED] [I] INT-[I]`
- Text 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`
- String to number conversion: `>float1 holds`
- Environmental queries: `max-xchar xchar-maxmem os-type`
- File inclusion: `\\\ .included`
- General file handling: `+fmode file-eof?`
- Redirection: `outfile-id infile-id`
- Directories: `basename dirname open-dir read-dir close-dir filename-match get-dir set-dir =mkdir mkdir-parents`
- Search paths: `absolute-file? .fpath file>fpath file>path`
- Simple numeric output: `h. dec.r`
- Floating-point output: `fp. e. e.p e.exact`
- Terminal output, in particular colors: `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 (a little larger than Mini-OOF, but much smaller than the others; Gforth-specific): `>o o> rec-moof2 :method`
- Regular Expressions: `` (( )) charclass +char -char ..char +chars +class -class c?  -c?  \d \s .?  -\d -\s \^ \$ str=?  =" {** **} {++ ++} {* *} {+ +} // {{ || }} \( \) \0 s>> >> << <<" s// //s //o //g FORK JOIN ` `?  -` ``
- Examining compiled code: `xt-simple-see xt-see-code`
- Debugging words: `debug-fid once ~~bt ~~1bt ??? WTF?? !!FiXME!! replace-word ~~Variable ~~Value +ltrace -ltrace #loc`
- Code Coverage and Execution Frequency: `.coverage annotate-cov bw-cover color-cover save-cov load-cov nocov[ ]nocov cov+ ?cov+ cov% .cover-raw`
- Definitions in assembly language: `abi-code ;abi-code`
- Disassembler: `disasm2 intel-syntax at&t-syntax disasm disasm-gdb`
- Keeping track of Time: `ns >time&date&tz ntime`
- Image saving and startup: `'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`
- Other words: `f.s-precision fclearstack sh-get synonym out`

Gforth EC non-news

We have not done Gforth EC work since Gforth 0.7. We recommend using
Gforth 0.7 for Gforth EC, but welcome bug or success reports for Gforth
EC in our git head.

User-visible changes
between 0.6.2 and 0.7.0:
```

```text
User-visible changes
between 0.6.1 and 0.6.2:
```

```text
User-visible changes
between 0.6.0 and 0.6.1:
```

```text
User-visible changes
between 0.5.0 and 0.6.0:
```

```text
User-visible changes
between 0.4.0 and 0.5.0:
```

```text
User-visible changes
between 0.3.0 and 0.4.0:
```

```text
User-visible changes
between 0.2.1 and 0.3.0:
```

```text
User-visible changes
between 0.2.0 and 0.2.1:
```

```text
User-visible
changes between 0.1beta and 0.2.0:
```