What is new in Ring 1.16?

In this chapter we will learn about the changes and new features in Ring 1.16 release.

List of changes and new features

Ring 1.16 comes with the next features!

  • Light GUILib

  • UTF-8 File Names in Microsoft Windows

  • Nested Methods Call in Separate Lines

  • Code Runner Extension support Ring

  • Zero and Strings

  • Better Installation Scripts

  • Better Documentation

  • MDI Windows Sample

  • More Improvements

Light GUILib

A lot of RingQt applications uses only QtCore, QtGui & QtWidget modules

These applications could use

load "lightguilib.ring"

Instead of

load "guilib.ring"

Also Ring Notepad, Distribute menu comes with a new option : Distribute light RingQt application

Using this option we can distribute lightguilib applications

For example, Distributing (Game of Life) using this option provides : target/windows folder

lightguilib
  • Size : 35 MB (Uncompressed)

  • Size : 13 MB (zip)

  • Size : 9 MB (exe) compressed using 7zip

So we can distribute these GUI applications using an installer less than 10 MB

Tip

if you need something smaller than that (1 MB) then switch to other libraries like LibUI

UTF-8 File Names in Microsoft Windows

In Ring 1.16, The Load command support using UTF-8 in the file name.

For example, We can write Arabic letters in the File Name!

Also the next functions support this feature

read()
write()
fopen()

Nested Methods Call in Separate Lines

In Ring 1.16, the Compiler support adding new lines after the method call and before the dot operator

Example:

myobj = new Start
myobj.one()
     .two()
     .three()
     .go()

class start
        func one
                ? "One"
                return new one


class one
        func two
                ? "Two"
                return new two

class two
        func three
                ? "Three"
                return new three

class three
        func go
                ? "Go!"

Output:

One
Two
Three
Go!

Code Runner Extension support Ring

If you are using Microsoft Visual Studio Code, We have good news for you!

The Code Runner Extension added support for the Ring programming language

coderunner

After installing Code Runner

It’s recommended to modify this file :

C:/Users/YOURUSERNAME/.vscode/extensions/formulahendry.code-runner-0.11.6/package.json

Set the property (code-runner.fileDirectoryAsCwd) to (True)

So Code Runner can move to the file directory when we run it using (Ctrl+Alt+N)

"code-runner.fileDirectoryAsCwd": {
        "type": "boolean",
        "default": true,
        "description": "Whether to use the directory of the file to be executed as the working directory.",
        "scope": "resource"
},

Tip

Check ring/tools/editors/vscode folder to support Ring in VSCode

tetrisvscode

Zero and Strings

From Ring 1.0, the language do implicit conversion between numbers and strings

This is useful when we mix them in some situations like printing something on the screen

x = 10          # Number
? "x = " + x    # x converted from Number to String

Also we can do arithmetic operations

x = "10"        # String
? 5 + x         # x converted from String to Number

The question is What happens if x content is not a number?

The answer : The result of the conversion will be (Zero)

x = "Test"      # String - The content is not a number
? 5 + x         # print (5) - x converted from String to Number (Zero)

The other operators like “=” and “!=” do the conversion too

Starting from Ring 1.16, They will be careful when we compare things to Zero

Example:

x = "Test"
? 0 = x         # The result will be FALSE
? 0 != x        # The result will be TRUE

This is useful when we compare between values inside Empty Lists and Strings

aList = list(10)        # 10 items - Each item is Zero
? aList[1] + 5          # print (5)
? aList[1] = "Test"     # False
? aList[1] = 0          # True

The other values (Not Zero) will follow the normal conversion rules

x = "5"
? 5  = x        # True
? 6 != x        # True

Better Installation Scripts

Ring 1.16 comes with better installation scripts on Linux and macOS

  • install.sh - Force creation of symlinks in case they already exist

  • install.sh - Remove quarantine flag

  • uninstall.sh - Delete symlinks from /usr/local accordingly

Better Documentation

All of the documentation chapters are revised and improved

MDI Windows Sample

The next sample is added to the samples folder

  • samples/UsingQt/MDIWindows/mdi_windows.ring

mdiwindowssample

More Improvements

  • Sample: samples/AQuickStart/GUILib/gui1.ring - Better Code

  • Form Designer - Set the Button Event (If it’s Empty) from the Button Text

  • Form Designer - Order the controls based on the position (Not the Creation Order)

  • Form Designer - File System - File Name Encoding

  • Form Designer - Properties Window - Property Name Column - Better Colors

  • StdLib - IsPrime() Function - Better Code

  • RingQt - QListWidget Class - AddItem() Method - Convert Number to String

  • RingQt - More Qt constants are defined

  • Ring2EXE - Display usage information

  • Ring2EXE - Support Creating folders when copying files

  • Ring VM - ring_vm_error() - Better Code

  • Ring Compiler - Don’t display (Unrecognized Option) if we have a source code file