Skip to content
kni edited this page Dec 14, 2016 · 13 revisions

Strings and Parsing

Web

Networking

Graphics and GUI

  • Modern, idiomatic GUI library (preferably not yet another abortive GTK+ bindings)
  • OpenGL bindings
  • CUDA bindings

File formats and storage

  • Interfaces to various modern file formats
    • Make sure that they support a common interfaces (and a ""factory"" that chooses the right implementation)
      • Bitmap Image Loader (SVG, PNG, GIF, JPEG)
        • SML3d has PNG loader
      • Bitmap Image Serialiser (PNG, GIF, JPEG)
      • Audio Loader/Serialiser (WAV, MP3, AU)
      • Stream Adapter (gzip, bz2, deflate, base64 (de/en)code, uu(en/de)code)
      • Archive (zip, tar, jar)
      • URL Opener (http, ftp, imap, pop, data)
      • File opener (URL Opener, Stream Adapter, eg open /tmp/foo.zip/bla)
  • Interfaces to various popular SQL (and NoSQL?) databases (http://smlweb.sourceforge.net/smlsql/?)

Parallelism and Concurrency

OS

  • Bringing OS-specific support up to date with the last 14 years worth of OS developments?
  • Installing signal handlers
    • every SML implementation seems to have this, we just need a standard interface
  • GNU Readline support (https://github.com/standardml/readline)

Utility

  • Smackage (an SML package system)
  • Interfaces to various crypto and hashing algorithms (e.g., libssl?)
  • Packaging SMLDoc from SML# (http://www.pllab.riec.tohoku.ac.jp/smlsharp/?SMLDoc) to make it more readily available as a stand-alone tool.
  • Libraries for fast data structures? e.g. 2D/3D matrices, queues, hashtables, etc.
  • ncurses
    • Gian has done a little work towards this. If you feel like finishing it, talk to him.
  • Let's make the vim sml indent Not Suck Anymore
  • Wrappers/implementations of math+statistics libraries
  • Standard ML highlighting for common source code highlighters

Packaging

We should possibly think about how we avoid namespace collisions and how we structure libraries such that they can be used with one another in a fairly seamless way.

Sources of Inspiration and/or code

Things we would like to avoid doing

Preferably we won't work on language changes or compiler hacking. Why? Because that's where most of the effort has gone in the past 10 years, but it was not the lack of quality compilers that killed SML --- it was the lack of quality libraries for performing "real world" tasks. We should focus our attention on getting an eco-system of maintained, discoverable libraries first, and then figure out what else we would like to do longer-term.

How you can help

  • Got some useful SML code rotting away in some obscure corner of the internet? You can drag it out, tidy it up and contribute it.
  • Implement wishlist features or help resurrect abandoned libraries.
  • Don't know SML very well? No problem! Writing FFI bindings for C libraries doesn't require a particularly deep knowledge of SML, but it's kinda tedious and many hands make light work.
  • Also, porting libraries from ocaml is pretty straightforward. Haskell libraries require a bit more care, due to the lazy/strict divide, but are still fairly easy.
  • Write documentation, tutorials etc.
  • Publicity materials for SML. Start an SML community website! Design a front-end for the eventual package manager!
  • ... suggest something!