"And I want a pony!"
This page is intended to hold a "wish-list" of things that would be nice to have. There are no limits - go wild.
Core system
- Make it smaller
- Make the source a human-readable paragon of software development brilliance
- Make it easy to target foreign architectures (cross-compiling) - cross-compilation is already supported pretty well, see man/4/Cross compilation for more information (felix). See also the meta-chicken layer for Yocto/OpenEmbedded for a practical application of that feature (mario)
- Make it easy to create monoliths with no run-time demands to run on targets without chicken
- Provide hooks in the scheduler to enable extensions to implement native threading
- Provide hooks in the garbage collector to implement native threading
- Allow for less copying when dealing with blobs, particularly when transferring to/from the FFI. I'd like to be able to take a void*+size_t pair from C and wrap it as a chicken blob that I can then view as a string or as an SRFI-4 vector with a make-.../shared call - and have a finalizer so that an arbitrary C callback (such a free) is invoked when the blob is GCed. This will make blob-shuffling apps such as Ugarit use less CPU and RAM.
- Add a compatibility module for the core of scsh. - There's support for scsh's SRE syntax in core and support for its process forms and most process-related procedures in the scsh-process egg (sjamaan)
- Weak References
- An better escape for C compiler options on the csc command line: Most configure scripts like sdl-config will output more flags than are currently recognised by csc as compiler flags. A more general approach could use -- as a separator for C compiler/linker flags: csc -O5 -s file.scm -- `sdl-config --libs` See the sdl egg for an ugly example of a kludge to dodge this issue.
- Threading: Make srfi-18 / scheduler use pthreads (instead of its current green threads) (already answered in the FAQ)
- Live coding with hot-reload of compiled modules.
- Alternative build system for eggs and programs based on CMake.
- Monolith static builds with all eggs and dependencies.
- Core using libuv instead of custom C implementation, thread scheduler based on libuv.
- Built-in macros for current file name and line number (like C preprocessor directives __FILE__ __LINE__).
- Simplified exception handling (try/catch/throw, dunno do something with all those condition properties)
- color / syntax highlighting in the stack traces
Eggs
- An IMAP Egg + ssl support
- A sawfish-like window manager (work in slow progress here)
- Awful-based implementation of the IPython Notebook
- CHICKEN-based Unix shell (an attempt here: lash)
- Complete MIME support (parsing+generating)
- Data lens (bidirectional transformations or parsing+unparsing from a single grammar specification)
- Bindings for photography and image manipulation related libraries: gphoto, libraw, lensfun, imagemagick, etc.
- More spatial tree data structures: BK tree, MVP tree, etc.
- A framework for convenient manipulation of pools of Unix worker processes
- CHICKEN-based issue tracking and version control :-)
- RDF library (possibly just a simple port of the Gauche RDF library)
- A really clever high-level declarative DSL for creating WebKit GUIs
- A pandoc-style library
- SSAX-style queries for JSON data structures
- Better XML processing tools
- Something like Whoosh (a search engine library based on the Okapi BM25F ranking function)
- A Scheme implementation of expect (like e.g., pexpect for Python)
- Bindings for LXC (there are bindings for Python and Lua in the git repository)
- HTTP/2 support (web stuff)
- Bindings for VIPS (a free image processing system)
- A symbolic algebra system
- Recursion schemes, groups and categories, just like Haskell
- An AsciiDoc parser and SXML emitter.
- Port edwin to CHICKEN
- A Scheme->awk compiler (like spock, but targeting awk).
- Bindings for imgui (sort of solved, nuklear is a wrapper for the imgui-inspired C89 nuklear library)
- CHICKEN wrapper around miniz
- A client for Telegram
- Something like zenity (library and maybe command line tool) (hackish bindings for the command line tool here: https://github.com/mario-goulart/henity)
- Bindings for libxdo
- Integrate CHICKEN with AppImageKit
Documentation
- Develop a production pipeline that turns the wiki manual pages into a manual that is easy to search online, downloadable as a single file so that it can be consulted offline, and, when printed, produces a beautifully formatted, indexed user manual.
- Turn the existing pages on internals into a detailed developer guide that is also easy-to-search, available in a single file, and printable as a beautiful document.