deepin announced a new self-developed general-purpose programming language: Unilang, and its GitHub repository provides documentation and an interpreter as a reference implementation.
Deepin said that although there are many options for desktop application development, such as Qt, Electron, PySide and Flutter. But they have their own advantages and disadvantages.
According to reports, Unilang’s goal is to become a modern general-purpose programming language that can effectively and flexibly develop desktop environment applications and coordinate the language part of new solutions that solve existing deficiencies. In order to maintain generality, Unilang does not provide GUI functions built-in, but provides related APIs through libraries. In the current plan, Unilang will support Qt binding-based libraries in order to bridge some existing desktop application projects. Unilang’s language design maintains sufficient abstraction and extensibility to support direct implementation of GUI frameworks in the future.
Furthermore, Unilang is designed at the level of language features to support different application development scenarios, but remains neutral to these scenarios in principle. In other words, Unilang can support the development of server and client applications at the same time, without requiring users to switch their thinking paradigms or drastically change their usage habits of the language.
The following is quoted from the official introduction:
- Expressiveness: Unilang is a Turing-complete general-purpose computing language. Unilang’s innovative language features help build powerful and easy-to-use abstractions.
- Reusability: Unilang’s emphasis on first-class objects makes almost any source program component more reusable than usual—if the language’s users so desire.
- Extensible: The underlying design of Unilang’s base language and language extensions gives developers the opportunity to smoothly improve existing language designs and implementations in unprecedented ways and remain compatible — rather than waiting for language designers and implementers to communicate and communicate with each other. feedback.
- Scalable: Unilang’s resource management model and abstraction capabilities allow programs to behave naturally by default on platforms with different computing resources, and are easy to adjust.
- multi-paradigm: Unilang’s language features do not require users to be bound by specific pragmatic paradigms – for example, do not restrict side effects to require accustomed to a purely functional style, or require implicit objects and require programs to Express in object-oriented form. The flexible abstraction enables users to use different styles of implementations on demand for design solutions in different domains.
- Ease of use: The minimalist design of Unilang’s core language features makes it fairly easy to get started. The extensible features and powerful abstraction mechanism enable the language to retain rich advanced content for developers to choose as needed. Reasonable basic design makes the mastering of different contents less error-prone and easier to use.
- Concentration: Unilang is not a language that needs to be well-versed in every feature to use it well – if the problem is not that the language needs to be modified, the users of the language should be able to focus more on solving problems outside the language.
Main Features of Unilang
- core language features
- entity properties
- Storage and object model (like C++)
- Object and value classes (like C++)
- First-class functions: combiners
- First-Class Environment: Environment Reference
- First-Class References: Reference Values
- Evaluation algorithm
- Variable resolution
- function call
- runtime support
- dynamic type checking
- Dynamic loading and execution
- Does not depend on GC
- unsafe operation
- PTC (proper tail call)
- interoperability
- C++ friendly object model
- Calling Unilang code in C++
- FFI: Calls to modules implemented in native languages such as C and C++
- …
- entity properties
- library features
- core library
- variable binding
- block scope
- list algorithm
- module mechanism
- …
- string
- Numerical arithmetic operations
- input Output
- Type system enhancements
- type annotation
- static type checking
- FFI API
- Qt bindings
- …
- core library
Hello World example
First program:
output:
Hello, world!
For details, see Unilang’s README, language introduction document, feature introduction document, interpreter implementation document and language specification document.
#Deepin #open #source #selfdeveloped #programming #language #Unilang #News Fast Delivery