- provide wisp script that wraps guile --language=wisp -x .w
- add Guile 3.0 to supported versions
- fix documentation: wisp allows up to 12 underscores
- new examples: heapsort, first guile-gi window, triangle, graph-algorithms (bfs),
- improved examples: faster securepassword, fix benchmarks for Python3, enter-three-witches.scm (theater scripts in Scheme), d6, evaluate-r7rs-benchmarks (csv output), download-mesh, upload-server
- download-mesh continues in its own project as wispserve: https://hg.sr.ht/~arnebab/wispserve
- You can create wisp-projects with conf via `conf new -l wisp PROJNAME`. See https://hg.sr.ht/~arnebab/conf
- wisp moved to sourcehut: https://hg.sr.ht/~arnebab/wisp
- remove unnecessary autoloads
- initial Org-Babel support for evaluating wisp source code in Emacs Org mode
- backtab chooses existing lower indentation values from previous lines.
- improve tabbing behaviour
- guild compile is missing the load path
- fix install directory, thanks to James-Adam Renquinha Henri and Ludovic Courtès who both
discovered a mistake in the paths: correct module path is /usr/share/guile/site/<version>/…,
but I used /usr/share/guile/<version>/site
- simplify install logic and pre-compile installed modules.
- add beautiful make help
- add FOSDEM 2019 slides: docs/fosdem2019.org
- As presented at FOSDEM, wisp the language is complete.
Tooling, documentation, and porting are still work in progress.
- add missing emacs support files
- wisp-mode.el: highlighting and basic editing for wisp files
- ob-wisp.el: basic org-mode babel support
- use ## for literal arrays in wisp to avoid stumbling over newline issues
- add ob-wisp.el for org-babel which can at least execute wisp code on my machine
- speed up starttime of examples from 1-5 seconds to <100ms by importing the module instead of running the file as script
- started slides for FOSDEM 2019 in doc
- require bash in examples, because sh misses exec -a on some systems
- support up to 12 _ for indentation
- examples: add downloadmesh to experiment with swarming downloads
- examples: add hamming new cli tool for hamming 11,7 decoding and encoding
- examples/benchmark: allow setting the Guile version with the GUILE environment variable
- examples/doctests: escape / in function names
- examples/securepassword: include collapsed corpus and function to recreate the corpus from the collapsed string
- examples/securepassword: add a bigram corpus to weight passwords
- examples/network: implement and test the pitch-black attack
- examples/securepassword: increase default strength to 12
- examples/securepassword: add checksum validation for letterblocks which use the delimiters as checksums
- examples/doctests: use literal array syntax
- examples: update fizzbuzz.w hello-world-server.w macros.w running_mean_std.w tinyenc.w
- examples: update and cleanup fibonacci
- examples: literal vector example for doctests.w
- examples: update comment-server.w to the reader
- fix installing wisp in local datarootdir
- make install provides wisp2lisp as program:
convert any wisp program to lisp.
- FIX: install language/wisp.scm instead of wisp-scheme.scm
- Add a warning with undefined indentation levels: they can
produce surprising behaviour when changing existing code.
- Fix bug with using not yet defined lower indentation levels.
- move wisp-scheme.scm to language/wisp.scm
this allows creating a wisp-project by simply copying language/
- provide realpath on OSX to get the tests to run
- change installation to guile/site/(guile version)/language/wisp
- evaluation for the r7rs benchmarks
- fix autotools for platforms with wissing or old Guile aclocal.
- README: note the releases and split usage into setup+usage
- also add examples argparse, y-combinator, unbiased-std, ild, duel,
commandline-handling, cartesian-sets, advent-2016-day-7
- added datatype benchmarks in examples/benchmark.w
- ensemble estimation: setup deviations from the covariance matrix
by cholesky decomposition
- enter three witches: i love you (dynamic dialog generation)
- enter three witches: multiple scenes, whitespace in names, colors
and .. as escape for .
- add enter three witches: minimum overhead for a theater script
- examples/with.w: syntax for a with keyword
which works like with in Python
- wisp-mode: add indentation cycling patch
- Use GUILE_PKG instead of PKG_CHECK_MODULES
thanks to Jan Wedekind
- "make install" adds the wisp language to Guile
thanks to Jan Wedekind
- add examples/securepassword.w
- add slides for FOSDEM 2016 talk
- examples/d20world.w: implement basic plotting on a map.
- more of the examples use the guile reader by default
thanks to Kevin W. van Rooijen
- examples/d6.w: add critical rolls
- use GUILE_PROGS to check for guile instead of using homegrown stuff
- fix multiline string bug when the string includes \"
tracked down by Michael Lamb
- new example: say.w (companion to
- add running mean and async
- add ensemble estimation
- always use /usr/bin/env bash as hashbang for shell scripts.
- fix factorial code
- improve handling of "` , :" (incomplete, see bug e44)
- unescape up to 6 leading underscores (fix bug 31)
wisp 0.9.0 (2015-09-24):
- actually distribute wisp.scm
- wisp now starts from wisp.scm. To bootstrap a release from Python,
remove wisp.scm and run `make wisp.scm`
starting with 0.9.0, installing wisp no longer depends on Python.
wisp 0.8.7 (2015-09-24):
- new example say.w, companion to
- bootstrap now explicitly requires bash
- include wisp.scm in the tarball to allow for pure-guile bootstrapping.
- spec: handle locale errors more gracefully
- improve readme
wisp 0.8.6 (2015-09-12):
- wisp-scheme.w allows ending a chunk with a trailing period. This
syntax is reserved for future use in SRFI-119, so you should not
rely on this in production code. It is mainly intended as REPL
feature to avoid visual clutter while running single lines, like
- new examples: cholesky decomposition, symmetric matrix, closure,
hoist-in-loop (cps transformation transcoded to wisp).
- updated examples: evolve.w
- clearer bootstrap output
wisp 0.8.5 (2015-07-28):
- wisp-scheme.w now parses : . to nothing. The colon adds parens, the
dot removes them. This provides compatibility to the older parser.
- wisp is now SRFI-119: http://srfi.schemers.org/srfi-119/srfi-119.html
wisp 0.8.4 (2015-06-23):
- no longer wrap wisp blocks into begin. Fixes missing macro
definitions when executed as file.
- any top-level form ends a wisp block. Required to avoid wrapping in
begin. In the REPL code is now executed when entering the first line
of the next top-level form.
- new examples: newbase60 and cli.
- known issue: To execute a procedure with shell-indirection, you have
to define a module.
- wisp-mode: disable electric-indent-mode which reindented lines
wrongly when pressing enter.
wisp 0.8.3 (2015-04-10):
- add partial source-properties support: show line numbers in backtraces.
- d20world: start of experiement to plot the results.
wisp 0.8.2 (2015-03-18):
- resolve REPL delayed output bug.
- forbid dot at the end of a line and as only symbol in a line to reserve them for future use.
- generalized the shell-call to guile: It gets the parentdir from $0.
- note curly braces, neoteric expressions and dual-wisp-sweet syntax.
- added tests: sxml, self-referencial function, curly-infix.
- new example: beautiful factorial.
- new example: ensemble estimation with ensemble square root filter. Uses python driven by an output-pipe as a plotting tool.
- SRFI 119 in draft.
wisp 0.8.1 (2014-11-19):
- srfi: polish implementation notes.
- add the requirements to the syntax-examples.
- wisp-scheme.w works completely again.
wisp 0.8.0 (2014-11-03):
- the testsuite is defined in terms of the code-tree, not in terms of
the readable file. Implemented in testrunner.w
- wisp-scheme passes the wisp testsuite
- wisp uses curly-infix by default (srfi-105)
- this is the first full featured release of wisp-scheme: wisp which
defers all complex parsing to the scheme reader (and match).
wisp 0.6.6 (2014-10-16):
- fix boostrap.
wisp 0.6.5 (2014-10-16):
- use wisp-scheme in the REPL.
- safe dot representation for reading a literal dot (.) for creating improper lists.
wisp 0.6.4 (2014-09-02):
- an actually working wisp implementation for scheme (only) which uses the guile reader. This should be actually correct for scheme. And match-magic ☺
wisp 0.6.1 (2014-08-05):
- simpler unicode handling
- honor --quiet in bootstrapping
wisp 0.6.0 (2014-07-14):
- Better performance
- Support for SRFI-105
- Working syntax highlighting in export via wisp-mode.el
- Wisp can now execute wisp-files directly via `guile -L . --language=wisp file.w`.
- Icosahedric Advection-Diffusion example: examples/d20world.w
- Draft for an SRFI
- Presentatien: Why Wisp?
- Working autoreconf -i; ./configure; make distcheck
- Real Testsuite (./runtests.sh . .)
wisp 0.5.3 (2014-01-08): Started to use autotools to get make distcheck.
wisp 0.5.2 (2014-01-07): Support general paren-prefixes for macros.
wisp 0.5 (2013-09-13): Wisp now has a REPL! Thanks go to GNU Guile and especially Mark Weaver, who guided me through the process (along with nalaginrut who answered my first clueless questions…).
To test the REPL, get the current code snapshot, unpack it, run ./bootstrap.sh, start guile with $ guile -L . (requires guile 2.x) and enter ,language wisp.
display "Hello World!\n"
then hit enter thrice.
Voilà, you have wisp at the REPL!
Caveeat: the wisp-parser is still experimental and contains known bugs. Use it for testing, but please do not rely on it for important stuff, yet.
wisp 0.4 (2013-09-10): wisp-guile.w can now parse itself! Bootstrapping: The magical feeling of seeing a language (dialect) grow up to live by itself: python3 wisp.py wisp-guile.w > 1 && guile 1 wisp-guile.w > 2 && guile 2 wisp-guile.w > 3 && diff 2 3. Starting today, wisp is implemented in wisp.