-*- RoadMap for gforth 1.0 -*-
ABGO Anton, Bernd, Gerald, Others welcome! * = work in progress, x = done
 B   [x] Multithreading API
 B       [x] Documentation
A        [ ] Documentation review
  G      [ ] Examples
 B   [x] Save images that contain C bindings
  G      [ ]*Interface files for .h-files; build on install Port typical C-Libraries like stdio. Allow for `include c/stdio` Same structure as in C
A    [ ] Recognizer Documentation & Examples
A        [x] simplify API
 B       [x] examples
AB       [ ] Documentation in manual
ABGO [ ] Documentation for Undocumented features
 B       [ ]*Document so far, that other programmers can understand the code and complete the documentation
A        [ ]*Search changelogs for features
A    [ ]*Sections
A        [ ] integrate for: quotations, strings, locals
A        [ ]*saver for images with sections
 B       [x] loader for images with sections
 B   [ ]*Header Interface - autodetect duplication, simpler interface, setters have to duplicate if not already
 B       [ ] Generate header from prototype without duplcation
AB   [ ]*locate, view, where & edit
         [ ] documented view>*
         [x]*help or doc - get documentation of word
  G      [ ] Website manual - doc/crossdoc.fd doc/doc.fd doc/gforth.texi.in|grep doc- doc/gforth.txt
A        [ ]*Add tex-section support
A        [ ] Add documentation explaining help so that "help help" yields it
A        [ ]*backtrace os-commandline
A        [ ]*where: interaction with editors - g can be used
A    [x]*2012 Implementieren
A        [x] update ansreport
A        [x] system documentation requirements
 B   [x] Configure Scripts
 B       [x] make -j
  G      [x] ./BUILD-FROM-SCRATCH mit make -j
 B       [x] ./BUILD-FROM-SCRATCH for android
 B       [x] libtool-Fehler when it cannot be found (why is ./libtool not enough?) - better error reporting in configure
 B       [x]*sudo make install does not clean up stuff - check if something is still owned by root
 B       [x]*Warnings are added to string variables: present summary at the end
  G      [x] hash -r show or document
 B   [x]*version comparison 001.000.000 -> upgrade path: 000.007.009
  G  [ ] theforth.net - client: look for local version or use global version
  G  [ ] swig
  G  [x]*find out why GLforth stopped working
  G  [ ] better vim support
A    [ ] changelog
A    [ ] news-file
A    [ ] update this ToDo file
 BG  [x]*implement smart .s "..."
AB   [x]*~~ uses ... and prints floating stack

-*- RoadMap for gforth post 1.0 -*-
 B   [ ] Multithreading: Use sections to allow compilation in every threading
ABG  [ ] fork-marker use fork instead of classic marker
AB   [ ] marker für sections
AB   [ ] bin-utils disassembler
  G  [ ] Klaut

-*- outline -*-

This file describes all the things left to do on GNU Forth. The list
is not complete, so you should add topics you miss or refine existing
topics. If you are working on a topic, add your name to the right of
the topic. If you have completed the work, remove the topic.

This an emacs outline. Use '*' to create topics.

* "DOS" Distribution
eventually convert all text files LF -> CR LF
check on 8.3 filenames?!

*The Engine
**measure the effect of some variations on different machines:
direct/indirect, NEXT splitting, keeping the TOSses in variables
**make it easy to put the right variation for each processor into the
configuration. I.e., on installation all combinations of options
should be measured and the fastest chosen. Knowing OS and architecture
is not enough, the best options depend more on the processor and the
compiler version.

* ANSI Forth
Add the remaining words

*Run-time System
**Gender-independent image file format and loader
**Stack Checking using the MMU where the OS makes it possible.

*Porting/Portability
** Machines/OSs
VMS (VAX,AXP)
DOS 8088 (16-bit or 32-bit? Note: there are no far pointers in gforth,
so 16-bit means 64k max.)
Windows
OS/2
Mac
Atari
Amiga
Use gcc-generated assembly on machines without gcc, but with
processors supported by gcc

*Foreign Language Interface
If anybody wants to do this, take a look at
ftp://ftp.complang.tuwien.ac.at/pub/forth/foreign.ds
Some of the problems are discussed there,
**C
Stuart Ramsden is doing a bit here.
**FORTRAN
**C++

*Windows and Graphics
**Ask Brian Dunn and Mike Hore for their OS-independent interface
**use the Foreign Language Interface to make X-Windows support

*Program Development Environment
Issues: Convenience, portability across plattforms, compatibility with
existing tools (Emacs, F-PC)
** Decompiler and Debugger
need debugging
** Profiling
The way this (and perhaps also debugging features) could work is this:
On compilation all code fields are remembered somewhere (using a
special hook like etags). If the user now decides to profile part of
the code, the corresponding code fields are replaced by fields
pointing to code that performs the measurement (or whatever else is
intended).
** emacs support
can be improved
**prefix file generator
extend or complement ans-report.fs to provide Forth definitions for
the simple non-ANSI words.
** rightcase
A tool that converts all uses of words in a source text to the exact
case of the definition. There's something like this out there on the
net (Joerg Plewe has posted a reference), but I think a program that
wires itself into the compiler (like etags.fs) is harder to fool by
search order tricks etc. EVALUATE is a problem.

*Documentation (Neal Crook, nac@forth.org is working on this)
A texinfo file
add more about internals (c primitives, creation of engine, etc.)
**glossaries of all wordsets.
*** Inclusion of stack comments, glossary comments, and wordset comments
in all source files.

* Distribution and Announcements
** Write articles for (general-purpose) magazines

-----
Authors: Anton Ertl, Gerald Wodni, Bernd Paysan, Jens Wilke, Neal Crook
Copyright (C) 1995,1996,1997,1999,2003,2007,2016,2017,2018 Free Software Foundation, Inc.

This file is part of Gforth.

Gforth is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation, either version 3
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.#See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see http://www.gnu.org/licenses/.
