Home Docs Tutorial Contributing Licenses Gallery

Preface to Hyang 1.2.1 Release

by Hilman P. Alisabana (alisabana@hyang.org)


1. The Use of English

We use English for the Hyang communications and describing language. Because Hyang is now liberally distributed under the terms of MIT license (see the Hyang licenses notice), this may involve the people I don't know well, either directly or indirectly. This may not be a problem for the people who usually uses English. By seeing on other programming languages, you may find that English has a long standing way that is widely used in the programming communication tradition, and that the use of English as the native describing language is much like a tradition. So I need to try to use English for the Hyang describing language and as the primary language for the Hyang communications, and hence the translations into other languages would fall behind it. So if you want to help translating the Hyang website and Hyang documentations into other language, then the translations tend to fall behind English. Consequently, there is a language area that can not be translated into other languages such as Hyang built-in functions, Hyang keywords, or any other tokens and terms that Hyang used. For the translation contribution guidelines into other language, see contributing page.

2. The Need for Infinities

Looking on what Python BDFL, Guido van Rossum, said, "It is dangerous to add too many implementation details to a language reference document — the implementation may change, and other implementations of the same language may work differently." With the use of describing language everything would be incomplete and the lack of details. It's the only way available, except we live alone on this planet. For the rigorous explanation about this you may interest to check out the semantic entailment rules and the two statements that has been proven mathematically by Kurt Godel on the so called Godel's incompleteness theorem.

From the incompleteness point of view, indeed, Hyang is provided with the less but efficient procedural syntax that can be extended using the powerful Hyang semantics, allowing the black hole for the natural or raw objects to be implemented. For instance, the use of Hyang meta concepts (i.e, Hyang metaworld and metamethod) supported by the Hyang base library that provides the core functions that can deal with the natural values without invoking metamethod. Such as the Hyang's cores naturalget, naturallyequal, naturalset, naturalsize, and the Hyang/C API also provides the primitive C functions that can handle natural values of the world (without calling the metamethod). This may open the room for discussion for the future development of Hyang language, including its implementations. The Hyang language is just the beginning!

3. Some Other Notable Backgrounds

As the age of computing grows rapidly, the need for fast and lightweight but more efficient and more powerful computing is currently on accelerations. On the other hand, the use of dynamically typed languages for daily works or for industries (such as gaming) has largely moved to slower and lower performance. This is the big challange, and not just an artificial reasoning. There is a reason to create and maintain the dynamic type languages that are capable of working with these applications or even used as a configuration language for such a wide range of applications.

Fortunately, Hyang language made with less, but efficient procedural syntax combined with powerful constructions of data description based on extensible semantics, make Hyang not only lightweight and fast when running, but also produces a powerful computation, and it can be used either as an embedded scripting language in the host program or as a standalone programming language.

Moreover, Hyang also performs a memory "diet" management that can control and clean unused objects automatically with the Hyang's built-in pushbroom, so you do not even need to detect and clean out or freeing the memory space manually when the "dead" or unused objects are there — Hyang can do it automatically!

Hyang language features include dynamic typing, reflective language, supports coroutines, performs automatic memory diet management, fast and efficient procedural syntax but also combined with the powerful semantics, encoding-agnostic, and the use of register-based virtual machine to interpret bytecode using the adaptive ABAH compiler (known as abahyang compiler), and implemented through the primitive C API. All these features make the Hyang ideal to be implemented for configuration purposes, scripting or rapid prototyping, and can be used to support a wide range of programming puposes including procedural programming, object-oriented programming, functional programming, data-driven programming, and data description.

4. Hyang 1.2.1 Release Notes

Hyang Language before 1.2.1 was my own project that never been distributed either offline or online. Beginning at early 2017 I had a good chance to start to continue working on this project seriously, mainly because of the influence of gaming services implementations. It took very long time on hardwork and heavy frustation, especially to deal with the manual reference utilities for the Hyang 1.2.1 documentations that took time longer than Hyang sources package working times, and all refinement works needed (including hyang.org website) took time about 1 week before release.

Hyang 1.2.1 is the newest version and newest version release of Hyang language. It is also known as the first public release and the beginning of Hyang language. For the complete introduction about Hyang language, see the Hyang 1.2.1 Language Concept on the other part of documentations.

There are some notes and highlights on the Hyang features in this release, such as Hyang standard library for packing/unpacking values, basic support for utf-8, support for both 32-bit and 64-bit numbers, and much more. Detail informations about Hyang standard libraries and Hyang extended libraries can be found on the Hyang 1.2.1 Library Reference.

There is also important note that makes this hyang.org website and hyang documentations accessible and look nice, that is the use of tools and web utilities such as Twitter's Bootstrap stylesheet for styling the pages, Ubuntu font family, jQuery, and also tools for building Hyang on Windows platforms such as TDM-GCC and 7-zip portable. All license notices of these tools are placed on a substantial part on their codes otherwise listed in the license and licenses history page.