close
Skip to content

snowfire-gtc/Proxima-Centauri

Repository files navigation

Proxima Programming Language & Centauri IDE

License: GPLv3 Version Build Status Issues

Complete development environment for scientific computing and data analysis

Proxima is a MATLAB-compatible programming language with full OOP support, GPU acceleration, and modern IDE integration. Centauri is the accompanying IDE built with Qt.

🚀 Features

Language (Proxima)

  • ✅ MATLAB-compatible syntax with end blocks
  • ✅ Full OOP with classes, interfaces, inheritance
  • ✅ Optional typing with automatic inference
  • ✅ GPU acceleration (CUDA)
  • ✅ CPU vectorization (AVX/SSE)
  • ✅ LLVM-based compilation
  • ✅ Automatic memory management (GC)
  • ✅ Rich type system (vectors, matrices, layers, collections)
  • ✅ Built-in documentation generation
  • ✅ Module testing framework
  • ✅ C/C++ interface

IDE (Centauri)

  • ✅ Advanced code editor with syntax highlighting
  • ✅ Visual debugging with breakpoints
  • ✅ Variable visualization (vectors, matrices, layers)
  • ✅ Git integration
  • ✅ LLM assistance (LM-Studio)
  • ✅ Auto-save system
  • ✅ Multi-user collaboration
  • ✅ Project management
  • ✅ Build system integration
  • ✅ Documentation generation

📦 Installation

Prerequisites

  • CMake 3.15+
  • C++ Compiler (GCC 9+, Clang 10+, MSVC 2019+)
  • LLVM 14+
  • Qt 6+
  • Git

Optional:

  • CUDA Toolkit (for GPU support)
  • CURL (for LLM integration)

Quick Install

# Clone repository
git clone https://github.com/snowfire-gtc/Proxima-Centauri.git
cd proxima

# Build and install
./install.sh install

### Testing

``` bash
# Run compiler tests
cd proxima/build
ctest

# Run IDE tests
cd centauri/build
ctest

# Run integration tests
./run-tests.sh

Full Feature List

Proxima Language

  • 1. Стиль Matlab для блоков кода (end вместо {})
  • 2. Типы single/double, nan, inf, pi, pi2, exp
  • 2.1. Тип time с форматированием
  • 3. Типы int4, int8, int16, int32, int64, int
  • 4. Тип bool (true/false)
  • 5. Вектора vector
  • 5.1. Типы point2, point3, point4
  • 5.2. Типы matrix22, matrix33, matrix44, matrix34
  • 6. Матрицы matrix
  • 7. Тип collection с заголовками
  • 7.1. Пропуск операторов перед окончанием коллекции
  • 8. Тип string
  • 9. Тип char
  • 10. Конкатенация столбцов [a, b]
  • 11. Конкатенация строк [a,, b]
  • 11.1. Индексация с 1
  • 12. Тип layer, конкатенация [a,,, b]
  • 13. Вектор через :, транспонирование '
  • 13.1. Индексация с :
  • 13.2. Преобразование матрицы в вектор [:]
  • 13.3. Поэлементные операции с .
  • 13.4. Автоматическое распространение размерностей
  • 13.5. Линейная индексация
  • 14. Преобразование char в string
  • 15. Тип type, функция type()
  • 15.1. Преобразование типов (style)
  • 15.2. Тип void
  • 16. Обязательные и опциональные аргументы функций
  • 17. Объявление ядер GPU (parallel)
  • 17.1. Передача данных GPU<->CPU
  • 18. RTTI для GUI
  • 19. Доступ к полям через .
  • 20. Формат объявления переменных
  • 21. Формат функций
  • 22. Тип auto для функций
  • 22.1. Множественные возвращаемые значения
  • 22.2. Ключевое слово assigned
  • 22.3. Анонимные функции
  • 23. Формат класса (public/protected/private)
  • 24. Перегрузка методов
  • 24.1. Метод как поле класса
  • 24.2. Тип method
  • 25. Интерфейсы для преобразования типов
  • 25.1. Переменные нескольких типов
  • 26. Конструкция arguments для валидации
  • 27. Стандартные функции валидации
  • 28. Форматированный print
  • 28.1. Опция level для print
  • 29. Print в файл
  • 30. Сериализация write/read
  • 31. Многострочные комментарии с номерами
  • 32. RTTI через rtti()
  • 33. Диалог настройки через rtti.show()
  • 34. Логические операции (!, !=, ==, ===, &, |, %, etc.)
  • 35. Бинарные операции (!!, &&, ||, %%, <<, >>)
  • 36. Дополнительные операции (%, ^, .^, , ?:)
  • 37. Директивы (include, exclude, namespace, using, define)
  • 37.1. Вложенность модулей
  • 38. Один модуль в одном файле
  • 38.1. Namespace для группы модулей
  • 39. Нет заголовочных файлов
  • 40. Флаги компиляции в формате collection
  • 40.1. Ограничения наборов команд
  • 41. Комментарии в файле сборки
  • 42. Упрощённый синтаксис файла сборки
  • 42.1. Манифест приложения
  • 43. Отладочные функции (dbgstop, dbgprint, dbgcontext, dbgstack)
  • 44. Интерфейс GEM
  • 45. Ключевые слова выполнения (if/for/while/do/switch)
  • 46. Отображение через show() для всех типов
  • 47. Сворачиваемые регионы #region
  • 48. Без дополнительных ключевых слов в вызовах
  • 49. Фреймворк тестирования (suite/test/assert)
  • 50. Генерация документации из комментариев
  • 51. Unicode переменные, case-sensitive
  • 52. Формат вызова компилятора
  • 53. Протокол IDE-компилятор (collection)
  • 54. Не использовать JSON, использовать collection
  • 54. Папка assets для данных приложения

Centauri IDE

  • 1. Поддержка языка Proxima
  • 2. Проект в отдельной папке
  • 3. Модули .prx в папке src
  • 4. build.rules в папке rules
  • 5. design.rules в папке rules
  • 6. ui.rules в папке rules
  • 7. Редактирование множества модулей
  • 8. Навигация (табы, поиск, стрелки, шорткаты, дерево)
  • 9. Отладка (безусловные и условные точки останова)
  • 10. Визуализация объектов (class, vector, matrix, layer, collection)
  • 11. Панель инструментов редактора (6 групп кнопок)
  • 11.е. 8 режимов отображения редактора
  • 12. Строка состояния (позиция, статус, сохранение, время, ресурсы)
  • 12. Консоль с 4 табами (build, errors, output, callstack)
  • 17. Git интеграция
  • 18. Auto-save каждые 5 минут в autosave/
  • 19. Однократное сохранение после 5 минут бездействия
  • 20. Пиктографическое меню (7 разделов)
  • 21. Один проект в экземпляре IDE
  • 22. Название IDE - Centauri
  • 23. Qt6/C++
  • 24. Простой, понятный, задокументированный код
  • 25. Режимы (Edit, Runtime, Pause)
  • 26. Схемы запуска (6 вариантов)
  • 27. Минимальная нагрузка в режиме релиза
  • 28. Лицензия GPLv3
  • 29. LLM интеграция (LM-Studio API)
  • 30. Многопользовательское редактирование
  • 31. Сворачивание методов, классов, комментариев, регионов

Contacts:

About

A Language (Proxima) & IDE (Centauri) designed from scratch for massive arrays, inspired by Matlab and C++

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors