This is the place where owl sources may be downloaded. Untar, type make, and you're done.
last stable
version: 0.7.6. Download it here. What's
new in version 0.7.6 (June 6, 2009 - reissued September 4, 2010)
Reissued
because the original tgz lacked the owl.1 manual page. Thanks to Sergey
Alirzaev for notifying me. No changes to the source files have been
made so far.
now owl operates with 64 bits integers
redisegned inclusion and module execution
commands, now coherent, consistent and usable into functions; inclusion is done through the underscore command _]filename[, while a module is loaded and executed by _[filename]; this makes rather useless previous commands of versions 0.7.0/0.7.2 (since they used ]filename[ for inclusion) and of version 0.7.4 (since it used ]filename[ for modules); this causes somehow a backward incompatibility. Sorry for this.
added the shifting operators << and >>, with argument under TOS and shift pattern on TOS
added the command _' to save a sequence of characters into a function as string
bettered
and enhanced the debug feature; the storing of
functions, comments and strings
(which filled the debug output with unnecessary data) has been discarded, and
debug lines have been modified, advancing them by three spaces and
avoiding their mixing with user program output. Besides, all commands are now
shown in full. Added also the debug options -D and -S,
the first to print all variables contents during debug listing, the second
to execute the debug listing as single steps, which lets inspect the program flow (not
available for Windows). To work propertly, these options need of course option -d to be activated also
added a global array of integers, whose interaction is demanded to two new operators ,# (store-array) and @# (fetch-array)
added the underscore command _D,
to toggle debug mode dynamically in the source code, for surrounding
specific parts of code to be debugged
added the commands _A and _P: the first returns the upper limit of the integer array, the second the upper limit of PAD
added
the system command _c (chronometer); the odd call resets the
chronometer, the even call returns milliseconds since previous
added the system command _s to send PAD's content to the shell as a command
added the upperscore ¯ extended escape character (identified by s) and the Icelandic thorn symbol þ (identified by T)
resolved a small bug in the underscore commands
detection: a
sequence of numbers, letters and underscores was not interpreted in the
right way: the characters just before and after the underscore were
simply discarded; now, only the characters with a meaning for the
underscore commands are executed, the others are interpreted as usual
new facts with mathematical functions of owl
code: I have enhanced the function for printing out binary numbers (now it
works also with negative numbers), introduced a revised rooting function (always
returning a number, zero for impossible roots), enhanced the
power function (that behaves correctly with 64 bits numbers),
introduced the division function (that behaves correctly with 64 bits
numbers, and always returns a value, the dividend for
divisions by zero)
the timing function (activated by the -t option) is now available within the -p option
the source file may be given to owl without extension (the natural extension .owl will be added automatically)
some minor changes here and there, bettered comments and code formatting
the
entire project has been put under the GPL3 conditions and two new
options for warranty and conditions have been introduced; the whole
help and version displays have so been redesigned.
the manual has been enhanced, and partially rewritten
Watch out: versions 0.7.0/0.7.2 and
version 0.7.4 are not compatible for what about the
inclusion/modularization commands; these have been completely revised
with version 0.7.6. Read above. What's
new in version 0.7.4 (July 1, 2007)
added the modules system; now any included file with the command ] (a
module) works in its own variable space, but nonetheless it inherits
all the caller variables; so, if you redefine (in the module) any
inherited variable, the caller won't see this change (it's a local
modification), and any use of inherited variables in the module
reflects their global scope (this is another advanced
programming technique)
added the system command _i to toggle integer division mode (it's like a dynamic version of the -i option)
added the system command _r to toggle rounding mode (it's like a dynamic version of the -r option)
added the system command _q to return stack quantity (depth)
added the ability to interpret any command sequence after
the filename; numbers will be put on top of stack and commands executed
before the filename execution
differentiated the STACKLIMIT and LIMIT constants (once unified into LIMIT) to let the user decide to increase or decrease stack depth (set by STACKLIMIT) independently of strings and arrays length (set by LIMIT). Nothing changes for the distributed version of owl, because they are both set to 1024
added the timing report in seconds (with three decimals) when it exceeds 1000 milliseconds
fixed the debug functions (that was buggered) by moving
it at the beginning of the parsing function, and thus catching
character commands before their execution, rather than after
(numbers, functions, string and comments were out of the process
because, after their evaluation, the cycle restarted immediately
after them without reaching the debug section)
added more escape chars from the Extended ASCII chart
added a man page, in the UNIX style...
beautified the code and the comments here and there, and corrected minor typos (above all in the help page, option -h)
What's
new in version 0.7.2 (February 11, 2006)
changed the versioning data (but display is the same)
added dynamic binding, enabling indexing function and PAD
storing/executing as function (this is an advanced
programming technique, now functions may be built 'on the run')
modified code to be compiled even under Windows, under
certain restrictions; so, I added the OWL_REMOVE flag
and removed the OWL_TIMING
one NOTE:
the language for Windows is not
compatible with the system commands related to
time: _t,
_tn,
_th,
_tm,
_ts,
_td,
_tM,
_ty
won't be recognized! Besides, there are other small nuisances. See the
manual.
added the _v
command to return version numbers
added the _OS
flag to return OS code (1 for Windows, 0 for UNIX)
added the -e
option to owl,
that enables PAD erasure after each string input; this prevents
using
PAD and arrays together, but assures no mistakes done while
dealing with PAD
added the ability to perform integer division as required
by number theory; so I added the -i option to owl to enable it
What's new in version 0.7.0 (December 10, 2005)
a dangerous bug has been fixed (see below)
some more escape chars have been added
the _
(underscore) command for numbers views display commands
has been introduced. owl
now works with binary, octal, decimal and
hexadecimal numbers in input and output. Besides, a more sophisticated
timing feature has been added to the system commands.
the include command has been introduced, using the
(currently unused) ]
character. This command will let build libraries.
a new control over void strings given to -p option has
been introduced
system messages have been simplified
(for those who peep into code) other comments may have
changed
more general code cleaning has been done
the "" ending quotes feature (that prevent a string
printing) has been added
I must admit a great
mistake: 0.6.x
versions suffered from a dangerous
bug; the fact is that if/then constructs and begin/repeat
cycles
(the ones working with one function only) couldn't be correctly
executed if inserted into other functions, since the buffer
erasure was in
the wrong place. After discovering the mistake, I decided that the current
0.6.x was a buggered version, and a new
version had to be developed; So, watch out:
DON'T USE 0.6.x VERSIONS FOR SERIOUS USAGE, unless you want
to study
the mistake itself! Oh, my!
What's new in version 0.6.2 (October 22, 2005)
the number getting function has been moved into parse(); this
uniforms the parsing process
the parameters feature has been introduced
the emission of ASCII 10 and 13 has been made uniform for
every system supporting ASCII
the debug function has been redesigned
some more escape chars have been added
system messages have slightly changed
(for those who peep into code lines) some comments changed
code has been bettered with some pointer adjusting
general code cleaning
What's new in version 0.6.0 (June 11, 2005)
everything.
Downloadable
files:
the sources
for 0.7.6
(recommended for any system with gcc. No dependencies. owl compiles under
gcc 4.0).
the examples.
I wait for
your contributions, to be inserted into this package...
some owl
logos, in different color, if you want to use them as
screensavers (with a photo parser)
NOTE FOR WINDOWS USERS: owl may be compiled under Windows, with minor differences (see the manual).
It's GPL! Enjoy!