The first programing language design for the cloud is close to become reality. It have been designing, prototyping, validating and documenting for several year and its name is EcstasyLang.
You may think what is the problem it solves that other programing language don´t ? It is a hard question to answer, but we talk about which challenges that EcstasyLang address and how it is designed to solve them. Let´s see some of the mains characteristics.
The language was designed to be scalable. Scalability for a programming language means that it must work well for a small and big projects. Big projects with big teams that maintain a huge code base over a period of year or decades. For a runtime perspective it must work well in a constrained device and be able to use the resources of larger server.
The EcstasyLang is a strongly typed language. This minimizes the potential surprises from code changes that is only detected as runtime failures. Another nice design emphasis is on readability. With a style that encourages the use of vertical space, explicit construct, and rich documentation integrated as part of the code. It also include cool support. Versioning and upgrades, mocking and test, and dependency management including conditional dependencies is part of the language by default.
The language is also design to be compiled to native executable format, executed in runtime environments or embedded into other languages. Memory management is automated by the language runtime. Its virtual machine was designed to efficiently support terabytes and even petabytes of application memory without requiring any “stop the world” pauses.
A scalable language is very important in the cloud environment where clients connect to applications from low-power devices. The applications grown over time and there is a potential for millions and even billions of connected clients.
The language is also secure by design, there is no complex layers or runtime logic and secure checks. The container model is used. Unlike an operating system container, an Ecstasy container has no surface area from within the container. Code running within the container has no access to operation system or hardware resources.
Clients and servers in the cloud must never trust the code that they are hosting. The same way, developers should never trust a language that does not assume that first.
The language has a well-define intermediate compilation. It can be target to almost any operating system and hardware environment. It was designed to support compilation to Web Assembly to support browser deployment and be portable to the client. It´s also design to support application portability, applications can be lifted from one server and moved to another.
A portable language is useful and important. The code needs to run across a variety of cloud providers and development environments. The applications often need be migrated within a cloud.
Developers need to be able to reuse their work. More and more they rely on components, libraries, and services developed by others. Without an explicit design for reusability, things get messy.
Ecstasy supports a modular programming. A module is a unit of reuse and can be as simple as a few lines of code or complex as hundreds of code. Modules can be signed or even fully encrypted. Module repositories allow modules to be managed and made available online or offline, supporting caching and download on demand.
In the past programming languages was design to solve many problems. Today, new languages are even more specialist for solve specifics problems. A language design to cloud environment is welcome and I wish its success. Into the official blog and GitHub repository you can find more about the language. The twitter account @xtclang can keep you up to date with news about the language.