Argentum

Latest posts
  • Tests
    Argentum got a special syntax to define tests right in the source files along this with code that needs to be tested, and a…
  • Multilevel breaks from lambdas
    This post extends the previous post related to break/continue/return operators. In Other languages Let's start with a JavaScript example: Why is it sometimes desirable…
  • New Argentum project structure
    Argentum is a modular language. Modules: Module is always a single text source file. It starts with a series of using declaration that define…
  • GUI Platform
    It's time to make Argentum programs work on: To do so it needs a graphical user interface library: But this GUI library itself needs…
  • JSON Module Overview
    Module Content It's available in playground, so go and try it yourself 🙂 Argentum JSON module provides three separate ways to handle JSONs in…
  • Build Argentum from sources on Ubuntu
    Argentum switched to using vcpkg so it automatically installs and builds all dependencies for all platforms in all configurations. Argentum dependencies include LLVM, Skia, SDL,…
  • Hello World with HTTPs→JSON→SQL
    Though fizz-buzz-like exercises are necessary at some early development stages, now it's time to try something more practical. Today we'll make some simple program…
  • JSON DOM
    Argentum JSON module has effective Writer and Parser that reads and writes generic application data structures to and from JSONs. It's a preferred way…
  • JSON Writer
    Argentum got a JSON module. Its Writer class allows to directly encode in JSON arbitrary application data without creating any intermediate DOM structures. Writer…
  • JSON Parser
    This StAX parser allows to easily read JSONs directly to the application data structures, skipping the building of JSON DOM and skipping all irrelevant…
  • 32bit Short and Float Types
    Argentum was initially designed as 64bit-only language. Its integer and floating point types were 64bit (int and double types respectively) while support for all…
  • RFC: Function and delegate upper bounds
    Argentum functions and delegates are value types, not references. This makes it impossible to create classes parameterized with function and delegate prototypes and this…
  • Proof of Absence of Memory Leaks in Argentum (Multithreaded Case)
    Each thread has its own mutable object hierarchy that is proven to be leak-free. All threads share the common immutable objects that have no…
  • A Formal Proof of Absence of Memory Leaks in Argentum Programming Language for the Single-Threaded Case
    Definitions and Assumptions Statement 1:In absence of cycles by owning pointers all object life times can be controlled with ref-counting. Definitions and Assumptions Proof…
  • Argentum Lifetime Management Method is Proven By 20+ Years of Usage
    20 years ago I created a programming language ZS for the Zodiac Interactive company. This language has three unique features: It's been in use…
  • Build Argentum From Sources on Windows
    Argentum uses vcpkg that automatically installs and builds all dependencies for all platforms in all configurations. Argentum dependencies include LLVM, Skia, SDL and other…
  • Strings and Cursors
    Argentum strings are mere sequences of Unicode code-points (internally encoded in Utf-8). Argentum string is immutable. They are not indexable.There is only one way…
  • How fast is Argentum (part 2)
    The previous "benchmark" tested integer arithmetic, control structures and function/lambda calls. This benchmark tests data structures, object creation, method calls and pointers. It's based…

Argentum - a safe, scalable, fast and tiny programming language.

  • Argentum is memory safe, type-safe, const-safe, null-safe, array-index safe and so on. It is safe.
    Unlike other languages that are also pronounced safe, argentum doesn't have and doesn't need unsafe mode at all, also it has no null keyword, no const-casts and no other ways around its safety measures.
    Argentum is rock-solid safe, no-cap.
  • Argentum automates memory management, and (which is unique) object hierarchy management.
    For example, if you declare that an engine belongs to a car, Argentum checks at compile time that no two cars share the same engine instance.
  • Unlike Rust and Swift Argentum guarantees absence of memory leaks.
  • Unlike Java, Go, JS and Python, Argentum doesn't use garbage collector, so no sudden pauses, overheads, and leaks.
  • Argentum has precise predictable object disposal moments, so objects can control any resources, not just memory.
  • Argentum compiles to machine code producing tiny executables with no extra dependencies.
  • Argentum has multithreading without deadlocks and data races.
  • Argentum is simple and expressive, crazy fast and memory-effective.
  • And its interop with C is mostly a pass-through.

Try Argentum compiler:

Hello world in Argentum:

using sys { log }     // Import function `log` from module `sys`
log("Hello world")    // Call it

More examples are here: SQLite example, Web client example, Tutorials

Publications

All publications and articles related to the Argentum features and ideas that were published to the broader audience:

Features

Tutorials

  1. Basic Syntax
  2. Fizz-Buzz.
  3. Graphs with Cycles.
  4. Call C99 functions from Argentum.
  5. SDL Demo.
  6. HTTPS->SQL
  7. Using Debugger

Project status

Links