v5.2 — Major update

CBlerr v5.2: Последний рубеж системного программирования.

Быстрота C. Синтаксис Python. Лучшее от лучших. От bare-metal ядер до высокопроизводительных приложений рабочего стола. Нативная компиляция и нулевой оверхед.

# CBlerr v5.2 — Win32 Window + Native calls
extern def MessageBoxA(hwnd: *void, text: *void, caption: *void, uType: int) -> int
extern def CreateWindowExA(dwExStyle: u64, lpClass: *void, lpName: *void,
                            dwStyle: u64, x: int, y: int, w: int, h: int,
                            hParent: u64, hMenu: u64, hInst: u64, lp: u64) -> u64
extern def ShowWindow(hwnd: u64, nCmdShow: int) -> int
extern def GetMessageA(msg: *void, hWnd: u64, min: u32, max: u32) -> int
extern def DispatchMessageA(msg: *void) -> i64

struct WNDCLASSEXA:
    cbSize: u32
    style: u32
    lpfnWndProc: u64
    cbClsExtra: int
    cbWndExtra: int
    hInstance: u64
    hIcon: u64
    hCursor: u64
    hbrBackground: u64
    lpszMenuName: *void
    lpszClassName: *void
    hIconSm: u64

def WndProc(hwnd: u64, msg: u32, wParam: u64, lParam: u64) -> i64:
    match msg:
        case 0x000F:  # WM_PAINT
            endofcode
        case 0x0002:  # WM_DESTROY
            endofcode
    endofcode

def WinMain() -> int:
    print("CBlerr v5.2 GUI starting...")
    wc: WNDCLASSEXA
    wc.cbSize = 80
    wc.lpfnWndProc = &WndProc as u64
    wc.lpszClassName = "CBlerrWnd".data as *void
    hwnd: u64 = CreateWindowExA(0, wc.lpszClassName, "CBlerr v5.2".data as *void,
                                    0xCF0000, 100, 100, 600, 400, 0, 0, 0, 0)
    ShowWindow(hwnd, 1)
    msg: u8[48]
    while GetMessageA(&msg as *void, 0, 0, 0) != 0:
        DispatchMessageA(&msg as *void)
    
    endofcode

Интерактивная песочница

Пишите CBlerr-код прямо в браузере — редактор с подсветкой синтаксиса и встроенной функцией print()

(Это демонстративная песочница. Работа с GUI/ASM и прочими вещами здесь не работает.)

main.cbl — CBlerr v5.2
output

Почему CBlerr?

Мощные возможности для разработчиков системного уровня

C-Backend (GCC/Clang)

Транспиляция в стандартизированный C11 с компиляцией через GCC/Clang для максимальной производительности. Поддерживает уровни оптимизации -O0 до -O3.

🖨️

Умный print() и len()

Встроенные функции print() (автоматически форматирует строки и числа) и len() (длина массивов и строк) без необходимости подключать внешние зависимости.

🐧

Кросс-компиляция и DLL

Собирайте исполняемые файлы для Windows x64 и Linux x64, а также динамические библиотеки (.dll) с помощью флагов -t Linux и -t WinLib.

📁

Проекты .cblproj

Забудьте про длинные аргументы. Управляйте сборкой, иконками, UI-режимами и целевой ОС через удобные файлы проектов.

🎯

Мономорфизация Generics

Универсальные функции и структуры с полной специализацией — безопасность типов абсолютно без накладных расходов в рантайме.

⚙️

AST-Оптимизации

Мощный фронтенд применяет удаление мертвого кода (DCE) и сворачивание констант (Constant Folding) прямо на стадии построения синтаксического дерева.

🔧

Встроенный ассемблер

Декоратор @asm для микрооптимизации критичных участков — SIMD, CPUID, атомарные операции в виде встроенного x86 ассемблера.

🚀

Управление памятью вручную

Прямой доступ к CRT: указатели, адреса &, арифметика и разыменование. Никакого GC, никаких скрытых накладных расходов.

Реальная мощь

Нативное Win32-окно и исходный код — всё написано на CBlerr v5.2.

extern def CreateWindowExA(
    dwExStyle: u64, lpClass: *void,
    lpName: *void, dwStyle: u64,
    x: int, y: int, w: int, h: int,
    hParent: u64, hMenu: u64,
    hInst: u64, lp: u64) -> u64
extern def ShowWindow(hwnd: u64, n: int) -> int

def WndProc(hwnd: u64, msg: u32,
             wp: u64, lp: u64) -> i64:
    match msg:
        case 0x0002:  # WM_DESTROY
            return 0
    return 0

def WinMain() -> int:
    # Компилятор сам добавит -mwindows флаг!
    hwnd: u64 = CreateWindowExA(
        0, "CBlerrWnd".data as *void,
        "Calculator".data as *void,
        0xCF0000, 100, 100,
        300, 400, 0, 0, 0, 0)
    ShowWindow(hwnd, 1)
    endofcode

Основные обновления v5.2

Начните за минуты

Простые шаги для написания первой программы на CBlerr v5.2

1

Установите CBlerr

Скачайте последний релиз или соберите из исходников. Требуется Python 3.10+ и MinGW/GCC/Clang.

git clone https://gitlab.com/tankman02/cblerr.git
cd cblerr
2

Создайте hello.cbl

Первая программа, использующая новую нативную функцию print и ключевое слово endofcode.

def main() -> int:
    print("Hello, CBlerr v5.2!")
    endofcode
3

Скомпилируйте

Используйте встроенную систему сборки. Теперь поддерживается Linux и сборка DLL!

# Для Windows (.exe)
python build/build.py hello.cbl

# Для создания динамической библиотеки (.dll)
python build/build.py hello.cbl -t WinLib

# Для Linux (кросс-компиляция)
python build/build.py hello.cbl -t Linux
4

Используйте .cblproj для проектов

Организуйте большой код с помощью файлов конфигурации проекта.

# Файл project.cblproj:
name = MyProject
main_file = hello.cbl
target = Windows

# Сборка проекта:
python build/build.py project.cblproj
5

Установите расширение VS Code (.vsix)

Официальная подсветка синтаксиса CBlerr для Visual Studio Code.

# Через командную строку:
curl -L https://gitlab.com/Tankman02/CBlerr/raw/main/cblerr-final-1.0.0.vsix \
     -o cblerr.vsix
code --install-extension cblerr.vsix