Skip to content

izuzanak/uclang

Repository files navigation

uclang - programming language

Build Status CI Total alerts Language grade: C/C++

Interpreted, dynamically typed, object-oriented programming language.

Language features

  • Language syntax is derived from C/C++ programming languages.
    • Some syntax is derived from Java programming language.
  • Strong object oriented approach.
    • Everything is an object.
    • No global functions at all.
    • Almost all actions are performed by execution of methods.
  • Support for inheritance.
  • Support for exceptions.
  • Support for native threads, no GIL (Global Interpreter Lock).
  • Module system designed for straightforward creation of binary modules in C/C++.
    • A language built in data types are implemented as binary module.
  • Lightweight interpreter, deployable on embedded devices.

Documentation

Documentation of uclang components is located in uclang/doc. Short introduction to language syntax and features can be found in uclang/doc/intro.md.

Language modules

A set of modules was created in order to use uclang in production. Implementation of these modules is located in uclang/mods

Some of implemented modules are:

base, sys, inotify, time, lang, pack, parser, math, psql, sqlite, http, websocket, curl, ftp, ssh2, gcrypt, iconv, jit, fann, av, ao, mpg, portaudio, gstreamer, gtk, image, glut, glew, gl, ftgl, vg, imxegl, snmp, node, containers, algorithms, binbits, graph, json, xml, python, v8, lua, mono, perl, ruby, prolog, zlib, zip, snappy, fuse, android

Examples

Some examples are introduced in uclang/doc/intro.md.

Building interpreter

The container generator cont is needed for compilation of the interpreter.

Linux compilation

Enter build directory build.

cd build

Process cmake source.

cmake ..

Build uclang.

make -j$(nproc)

Linux example scripts

Example scripts can be executed by following commands:

cd uclang/uclang_build
export LD_LIBRARY_PATH=$(pwd)
./uclang scripts/hello.ucl
...