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:
- Memory Allocation: All of your memory allocation needs.
- Error Handling: Convenient utilities for aborting your program.
- OS Interfaces: Ask not what you can do for your OS, ask what your OS can do for you.
- File Handling: Sometimes data just wants to persist.
- Networking: Communicating with other systems isn't just a fad.
- Command Line Parsing: Makes it easy to parse options from the command line.
- Formatted Output: I/O. Without monads.
- Variadic Arguments: If you want ugly APIs, we've got you covered.
- Slice manipulation: Some generic functions. Easy to write yourself, but a bit tedious.
- String Manipulation: Some Unicode-aware string poking.
- Unicode: Wait a second, all languages aren't English?
- Pervasive Data Structures: At least, I use them a lot.
- Big Integers: Big integers. They're useful for some things. If you use them too, we've got you covered.
- Misc: Random crap that doesn't really fit into a category.
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.