Myrddin: API Reference

This is the page where the Myrddin language is documented. You want to know all the boring, dull details? Well, they're here.

APIs

Libstd

The standard library. You'll probably be using it in all your code, because it's the standard. It's intended to cover a good portion of the functionality that you'll need for any program. It's a bit of a grab bag, but can be roughly categorized into the following subsections:

Libsys

Libsys is a direct interface to system calls provided by the platform. It is a platform specific wrapper to the system. The documentation for the various system calls is largely deferred to the systems themselves.

Any code that uses libsys will likely not be portable, but in many cases it is the only way to access system specific functionality, which may not be implemented elsewhere.

Libbio

This is a buffered IO library. It allows for many small reads and writes to be done with better performance than writing a system call for each one. On top of that, it allows for more convenient interfaces to handle linewise or delimited input, where peeking at the input stream may be necessary.

Libregex

This is a regex library, as implied by the name. It implements a simple but powerful regex syntax, with full Unicode support. It also exposes the regex syntax tree if needed, which is useful for code that wants custom regex handling, but wants to remain consistent with the myrddin regex syntax.

Libcrypto

This is a library that handles cryptographic functions. It aims to implement the most common cryptographic hashes and ciphers, and provides a fairly consistent interface to it.

Libdate

Libdate provides a fairly complete interface for manipulating dates, times, and timezones. It handles adding durations and periods to dates, formatting and parsing dates.

Libthread

Libthread is currently half-assed and broken, and it doesn't work very well with libstd, which is not yet thread aware. This needs work.

Utilities

Mbld

Mbld is the Myrddin build tool. It knows how to handle source and library dependencies, as well as build generated sources.