source: project/wiki/wish-list @ 36801

Last change on this file since 36801 was 36801, checked in by evhan, 8 months ago

wiki/eggref: update docs/formatting/urls and eggref/5/{r7rs,fancypants,chicken-belt}

File size: 5.6 KB
Line 
1== "And I want a pony!"
2
3''This page is intended to hold a "wish-list" of things that would be nice to have. There are no limits - go wild.''
4
5---
6
7=== Core system
8
9* Make it smaller
10* Make the source a human-readable paragon of software development brilliance
11* 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 [[https://github.com/OSSystems/meta-chicken|the meta-chicken layer for Yocto/OpenEmbedded]] for a practical application of that feature (mario)''
12** Make it easy to create monoliths with no run-time demands to run on targets without chicken
13* Provide hooks in the scheduler to enable extensions to implement native threading
14** Provide hooks in the garbage collector to implement native threading
15* 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.
16* 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 [[/egg/scsh-process|scsh-process egg]] (sjamaan)''
17* Weak References
18* 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:
19 csc -O5 -s file.scm  -- `sdl-config --libs`
20See the [[egg:sdl|sdl egg]] for an ugly example of a kludge to dodge this issue.
21* Threading: Make srfi-18 / scheduler use pthreads (instead of its current green threads) (already answered in the [[man/4/faq#does-chicken-support-native-threads|FAQ]])
22* Live coding with hot-reload of compiled modules.
23* Alternative build system for eggs and programs based on CMake.
24* Monolith static builds with all eggs and dependencies.
25* Core using libuv instead of custom C implementation, thread scheduler based on libuv.
26* Built-in macros for current file name and line number (like C preprocessor directives __FILE__ __LINE__).
27* Simplified exception handling (try/catch/throw, dunno do something with all those condition properties)
28* color / syntax highlighting in the stack traces
29
30
31=== Eggs
32
33* An IMAP Egg + ssl support
34* A sawfish-like window manager ([[https://github.com/mario-goulart/nsfwm|work in slow progress here]])
35* Awful-based implementation of the IPython Notebook
36* CHICKEN-based Unix shell (an attempt here: [[https://github.com/vbuaraujo/lash|lash]])
37* Complete MIME support (parsing+generating)
38* Data lens (bidirectional transformations or parsing+unparsing from a single grammar specification)
39* Bindings for photography and image manipulation related libraries: gphoto, libraw, lensfun, imagemagick, etc.
40* More spatial tree data structures: BK tree, MVP tree, etc.
41* A framework for convenient manipulation of pools of Unix worker processes
42* CHICKEN-based issue tracking and version control :-)
43* RDF library (possibly just a simple port of the Gauche RDF library)
44* A really clever high-level declarative DSL for creating WebKit GUIs
45* A pandoc-style library
46* SSAX-style queries for JSON data structures
47* Better XML processing tools
48* Something like [[http://pythonhosted.org/Whoosh/intro.html|Whoosh]] (a search engine library based on the [[http://en.wikipedia.org/wiki/Okapi_BM25|Okapi BM25F]] ranking function)
49* A Scheme implementation of [[http://en.wikipedia.org/wiki/Expect|expect]] (like e.g., [[https://github.com/pexpect/pexpect|pexpect]] for Python)
50* Bindings for [[http://linuxcontainers.org/|LXC]] (there are bindings for Python and Lua in the git repository)
51* [[http://en.wikipedia.org/wiki/SPDY|SPDY]] support (web stuff)
52* Bindings for [[http://www.vips.ecs.soton.ac.uk/|VIPS]] (a free image processing system)
53* A symbolic algebra system
54* Recursion schemes, groups and categories, [[http://hackage.haskell.org/package/category-extras|just like Haskell]]
55* An [[http://asciidoctor.org/docs/what-is-asciidoc|AsciiDoc]] parser and SXML emitter.
56* Port [[https://github.com/scheme/edwin48|edwin]] to CHICKEN
57* A Scheme->awk compiler (like [[/egg/spock|spock]], but targeting awk).
58* Bindings for [[https://github.com/ocornut/imgui|imgui]] (sort of solved, [[egg/nuklear|nuklear]] is a wrapper for the imgui-inspired C89 [[https://github.com/vurtun/nuklear|nuklear]] library)
59* CHICKEN wrapper around [[http://code.google.com/p/miniz/|miniz]]
60* A client for [[https://telegram.org/|Telegram]]
61* Something like [[http://www.linuxjournal.com/content/make-your-scripts-user-friendly-zenity|zenity]] (library and maybe command line tool) (hackish bindings for the command line tool here: [[https://github.com/mario-goulart/henity|https://github.com/mario-goulart/henity]])
62* Bindings for [[https://github.com/jordansissel/xdotool|libxdo]]
63* Integrate CHICKEN with [[https://github.com/probonopd/AppImageKit|AppImageKit]]
64
65=== Documentation
66
67* 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.
68* 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.
Note: See TracBrowser for help on using the repository browser.