In particular, I'm curious why you dropped multimethods in favor of classes in Wren.
EDIT: I see you've already answered this question (http://wren.io/qa.html#what-about-your-other-languages)
In particular, I'm curious why you dropped multimethods in favor of classes in Wren.
EDIT: I see you've already answered this question (http://wren.io/qa.html#what-about-your-other-languages)
1. Julia came out. It looks to me like a really nice language that is heavily based on multimethods, and is orders of magnitude more mature than Magpie. In many ways Julia fills the niche I was aiming for with Magpie and probably better than I could have.
2. I hit a dead end in the VM implementation. This is an amateur mistake on my part, and obvious in retrospect, but it turns out writing a VM in C++ with virtual methods and also using a moving GC is a Bad Thing. It means in the middle of a method, "this" could disappear out from under you. Once I realized that, I realized I'd need to significantly rework the entire VM to fix it. Oops.
3. I'm not a sophisticated enough VM hacker to implement multimethods efficiently. I might get there eventually, but getting Magpie to a state where it's fast enough to be usable for real programs is very likely beyond my skills, especially with my limited free time.
Wren was designed deliberately to be a language that I personally have the ability to design, implement, and ship. There's definitely something to be said for being more ambitious and trying to push one's own envelope, but I wanted Wren to be a think that I could make and get to something usable with a realistic amount of effort.
> it's been somewhat interesting to not have to deal with the expression problem.
Yeah, I think it would be really fun to hack on a compiler in a language with multimethods.