Want to contribute? Fork us in GitHub!

Application to application

In the process of working on the recent release 0.32.0, we’ve faced an interesting case related to one of the fundamental concepts of EO in particular and phi-calculus in general - application.

This blog post will attempt to explain what application is under the hood, how it works in our compiler, and why this code (arr.at 0) "Hello" does not work in the way you expect.

MEMORY as a container for a real data

In the recently released version 0.31.0, we’ve changed the behavior of the memory object. Until now, when we stored an object in memory, it attempted to dataize the object into data and started behaving accordingly. However, we are now reevaluating the concept of data within our language, and the memory is an entry point.

The CAGE Prohibits Storing Objects Formed Differently

In the recently released version 0.30.0 we’ve changed the writing mechanism of cage object. Until now, we could store and write to cage any object we wanted. But cage became smarter and stricter and can store only objects that have the same “form” now.

We Are Hiring!

ATTENTION! We are also hiring interns (BSc and MSc students). Find me in Telegram, we will discuss: yegor256.

EOLANG is an R&D project, where we create a new programming language in order to introduce new techniques of object-oriented programming. We believe that existing object-oriented languages, such as Java and C++, are not strong enough in their adherence to the object paradigm originally introduced by Alan Kay and earlier implemented in languages like Smalltalk and Self. Besides that, we expect to explore the possibility of using our new language as an intermediate representation in the process of optimization of mainstream languages. EOLANG is based on đťś‘-calculus, which is a formal foundation for it and potentially for other object-oriented languages.

We have a few open positions in our team:

  • Java developer
  • C++ developer
  • Rust developer

Automating the Pull of New Releases for EO Libraries

As a developer, keeping up with the latest releases of libraries is crucial to ensure that your code is up-to-date and optimized. However, manually checking for new releases can be time-consuming and tedious. That’s why we’ve created an automated pull system for new releases of EO libraries in our Home repository.

Declarative WHILE: nested example

Previous post by @yegor256 explained declarative WHILE nature. Let’s examine more complex example when while objects are nested.

The WHILE Object Is Declarative Now

In the recently released version 0.28.14 we’ve changed the iterating algorithm of the bool.while object. Until now, by our mistake, it was imperative. Now, it’s declarative. The difference is in the result of its dataization. The previous imperative version was “returning” a data object. The new declarative one returns the latest body of the loop (without dataization!). The difference is huge (thanks to it, many of our tests broke).

Object Adoption

In the recently released version 0.28.14 we introduced a new language feature, which is called “object adoption” — because it allows changing of an object’s parent. Every object in EO has a parent object, which is set to it when it’s born (either formed or copied). Until the recent release it was not possible to change the parent object using EO language. However, it was possible to do this from inside an atom (through Java). Now, there is no special API inside Java, but the feature is available through EO.