Eigenstate : Myrddin Monthly - May 2014

What was a month, again?

So, since the last update was in January, I declare that months have no meaning. What is "meaning" anyways? What is "is? Isn't time just an illusion? What would the world look like through the eyes of a dog? And is kellogs really part of a complete breakfast?

I got busy. Then I just started to forget doing the monthly updates. I promise there are changes, although they may not be as significant as I'd like.

Diff Stats:

Overall, there's been a good deal of churn in Myrddin.

    91 files changed, 3424 insertions(+), 1068 deletions(-)

The majority of additions occured in libstd, which has grown a number of new system calls, a bigint implementation, and many other improvements.

User Traits Are Partly Supported

This is one of the bigger ones for the language. User defined traits are supported. This means that you can do something like:

    trait hashable @t =
            hash    : (a:@t -> int32)
            equal   : (a:@t, b:@t -> bool)
    ;;

    impl hashable int =
            hash = {x
                    -> x * Bigprime
            }

            equal = {a, b
                    -> a == b
            }
    }

Note a few key features: First, this is adding a trait to a built in type. In this example, you have no access to the type definition. It is not declared in this module, or by you. But you can still add traits to it.

You can, in fact, add traits to any type at any point. You can add different implementations of the same trait to any type as long as they live in different modules and don't conflict.

New Libraries

Cryptographic hashes now work. The library supports a few of the most common ones, including:

- md5
- sha1
- sha256
- sha224
- sha512
- sha384

More will be added as time passes, and a library of ciphers will also end up being born.

Miscelania

There is now a mailing list for Myrddin. To subscribe, mail

myrddin-dev+subscribe@eigenstate.org