Sunday, February 21, 2010

Reia: new branch merged

If you've been following Reia, you're probably aware I started on a new branch intended to correct problems with the language's initial design and implementation. That branch has now been merged into "master" and is now the definitive implementation of Reia going forward.

Here's a short summary of the changes:
  • Significantly faster at loading code
  • All Reia core types are identical to their Erlang counterparts
  • Methods of all core types are now self-hosted in Reia (some such as List couldn't be before)
  • All code is compiled: no more metacircular evaluation
  • Records are used extensively in the compiler implementation, making the code easier to understand and change
  • Standard bitwise operators from the C family of languages are now implemented
  • Standard +=, *= etc assignment operators are now implemented
  • "Magic Rebinding": members of lists, tuples, and dicts can now be assigned directly. "Bang" operator allows modification of the methods of receivers.
  • Concurrent object model is gone (to be reintroduced in Reia 2.0)
  • Old standard library is gone (to be rewritten with immutable objects)
As part of this merge, I've gone through the Reia Wiki, bring it up-to-date with all of the changes which have gone into the new branch. I believe I've caught them all, but if you see anything documented in the Wiki which doesn't seem to work, please let me know.

These represent that majority of hurdles which needed to be overcome before a Reia 0.1 release. However, one major feature is still missing: immutable objects. Reia will implement all types, including its core types, and user defined types, as immutable objects. You can think of these like objects in any other language, except once constructed they cannot be changed. Objects with changing state will be provided by the concurrent object model of Reia 2.0.

This means Reia will be an "everything is an object" language after all. I will provide the details of immutable objects in a follow up blog post.


Pichi said...

I have to say that this new Reia have much more sense for me than previous version. Especially divide immutable and concurrent (mutable) objects sounds like good idea. Compiled modules, again very good idea. Unfortunately I like variables immutability and other features of Erlang than Reia fancy syntax but I would be glad if Reia attract more people to Erlang world. Good Work!

GerryJ said...

I am wondering if your need to take on mutability might be partly addressed by looking at ideas from "Clojure Programming" at
As well Clojure appear to offer even lighter processes if you accept the idea of state change corresponding to a transaction.
I wouldn't go so far as making everything an object!

Văn Sát said...

Bạn là chủ xe và đang cần tìm hàng vận chuyển? Bạn là người cần tìm xe vận chuyển hàng? Vậy bạn hãy ghé vào sàn vận tải nội địa đây là nơi sẽ giúp bạn tìm thấy thứ bạn đang cần tìm. Hiện nay, chúng tôi tự hào là một trong những đơn vị cung cấp giải pháp vận chuyển hàng đầu hiện nay. Với các dịch vụ vận chuyển hàng hóa nội địa, vận chuyển Bắc Trung Nam, vận chuyển hàng đông lạnh bắc nam,... Đến với chúng tôi bạn sẽ không cần lo lắng tìm hàng hay tìm xe để vận chuyển hàng. Hiện nay thì các tuyến vận chuyển chúng tôi đang có thể kể đến như: vận chuyển hàng đi bạc liêu, vận chuyển hàng đi vũng tàu, vận chuyển hàng đi bắc ninh, vận chuyển hàng đi bến tre,... Để biết thêm thông tin hãy liên hệ với chúng tôi nhé.