Warning: this is an htmlized version!
The original is here, and
the conversion rules are here.
Flua is an implementation, written in Lua, C and Nasm, of a variant of
Forth.  Its main ideas are:

  * A Flua program IS its bytecode, as it is the bytecode that will be
    executed by the engine (in Forth jargon: the "inner interpreter").
    The source is just a way to generate the bytecode.

    Most modern free Forths for *NIX systems seem to take the position
    that users don't want to see the bytecodes, only the Forth source,
    and thus it is hard to figure out how these Forths implement the
    several kinds of defining words, the DOES> construct, etc.  In
    Flua, in contrast, the bytecode corresponding to a program is
    compiled to a ".asm" file, that can then be processed by Nasm to
    generate a very nice ".lst" file.

  * Efficiency is attained by running well-written programs (i.e.,
    well-written bytecodes) on fast inner interpreters; and the best
    way to have readable programs generating very efficient bytecodes
    is to have good optimizers and users that write code that the
    optimizers can handle well...  and to do that users need to be
    able to understand how the optimizers work, and they should be
    able to add their own extensions, disable features, inspect each
    step of the optimization process, etc; as the bytecode is just
    free-form data if it were very easy to manipulate free-form data
    then it would be easy to write optimizers.

    I think that the RSR trick is a nice trick for that.



More later.

The links below, about the oldest predecessor of Flua ("Crim"), may be
interesting.

# (find-fline "~/crim/")
# (find-fline "~/crim/letter.txt")
# (find-fline "~/crim/ETC.txt")
# (find-angghtml "crim/index.html")

The immediate predecessor of Flua was written in Tcl:

# (find-fline "~/CRIM1/")
# (find-fline "~/CRIM1/README")


The links will work if you are using a perfectly-configured ;) Emacs
with the eev package installed (see http://angg.twu.net/), or if you
are reading the htmlized version of this file, at:

  http://angg.twu.net/LUA/lua-0.02/README.html
  http://angg.twu.net/LUA/lua-0.02/



The files in this directory:

  Makefile	      :-)
  README	      This file.
  flua-comp.lua	      The bulk of the compiler.
  flua-demos-old.lua  Code for five demos, in the "old style".
			A good stating point.
  flua-demos.lua      Same, but in a shorter (and more powerful) format.
  flua-lua.lua	      Let compiled Flua programs call Lua functions.
  flua.lua	      The front line for the compiler.
  inc.lua             Some library functions used by the other ".lua"s.
  skel.bytecode.asm   The skeleton used to generate the Nasm bytecode files.
  skel.engine.c       The skeleton used to generate the engine files in C.

You can get a package with the files above from
<http://angg.twu.net/LUA/flua-0.02.tar.gz>; the other files on this
directory are generated automatically from those:

  ___.html            HTMLized versions of the files above.
  demo_.engine.c      The engine (or "inner interpreter") in C for demo_.
  demo_.bytecode.asm  The bytecode for demo_, as a Nasm file.
  demo_.bytecode.lst  The "listing file" generated from the above by Nasm.
  demo_               The binary obtained by compiling and linking
		      demo_.engine.c and demo_.bytecode.asm,
  demo_.dbg.out	      The output of running demo_ with the debugging
		      flags turned on; shows a complete single-stepping.



The files above are the ones that get packed in the lua-0.02.tar.gz

# (find-flua "Makefile")
# (find-flua "README")
# (find-flua "flua-comp.lua")
# (find-flua "flua-demos-old.lua")
# (find-flua "flua-demos.lua")
# (find-flua "flua-lua.lua")
# (find-flua "flua.lua")
# (find-flua "inc.lua")
# (find-flua "skel.bytecode.asm")
# (find-flua "skel.engine.c")

# (find-fluafile "")





(setq sentence-end-double-space t)
(setq sentence-end-double-space nil)