Due in September, the Ring 1.13 upgrade supports Qt for WebAssembly, a platform plug-in for building Qt applications that can be integrated into web pages. WebAssembly provides a fast, compact binary format that enables near-native performance for web applications.
Ring uses Qt as its standard GUI library, through the RingQt binding. Ring 1.13 supports exporting a Ring project as a Qt project that includes the Ring application compiled to a Ring object file, along with the Ring virtual machine. Then, the project is built for WebAssembly or mobile using the Qt Creator IDE.
Ring 1.13 also is slated to feature a host of other improvements:
- Organisation has been improved for project folders and source code files. A Language folder contains source code and the visual source of the compiler and the virtual machine. There also are folders for libraries, extensions, tools, and samples
- More low-level functions have been added
- A new extension supports the stb_image library
- Improved support is offered for RingRayLib, an extension of the RayLib game programming library. All functions now return objects instead of pointers and support is offered for RayMath library functions
Initially released in January 2016 by developer Mahmoud Fayed, Ring is a general-purpose language supporting paradigms including imperative, procedural, object-oriented, functional, and declarative.
Natural language programming also is supported. Programmers are provided with tools to build a natural or declarative language. Domain-specific languages can be built. The Ring architecture features a virtual machine written in C.
Available from GitHub for Windows, MacOS, and Linux, the Ring language can be used for application types including GUI, web, mobile, console, and games. Among the languages cited as influencing Ring include Lua, Python, C, and Ruby. The current stable release is Ring 1.12.