Skip to content

netkeep80/jsonRVM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

172 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Gitpod ready-to-code GitHub Actions GitHub last commit GitHub

jsonRVM β€” json Relations (Model) Virtual Machine

            R
         S__|__O
       O   _|_   S     Fractal
    R__|__/_|_\__|__R  Triune
       |  \_|_/  |     Entity
       S    |    O
          __|__
         /  |  \
        /___|___\

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ / Contents


Русский

ОписаниС

jsonRVM β€” это Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина для исполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, написанных Π½Π° Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΌ языкС "МодСль ΠžΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ" (Relations Model, RM). ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ JSON ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машиной ΠΊΠ°ΠΊ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ

МодСль ΠžΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ β€” это язык мСтапрограммирования, Π³Π΄Π΅ всё прСдставляСтся ΠΊΠ°ΠΊ сущности ΠΈ ΠΈΡ… ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ:

  1. Бущности (Entities) β€” Π±Π°Π·ΠΎΠ²Ρ‹Π΅ элСмСнты систСмы Π² Π²ΠΈΠ΄Π΅ JSON-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²:

    • ΠŸΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹: числа, строки, Π±ΡƒΠ»Π΅Π²Ρ‹ значСния
    • БоставныС Ρ‚ΠΈΠΏΡ‹: массивы, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹
    • Бсылки: $ref Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ сущности
    • Π˜ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡ‹Π΅ конструкции: $rel, $obj, $sub
  2. ΠžΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ (Relations) β€” ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ взаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ сущностями:

    • $rel β€” ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ (ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€)
    • $obj β€” ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ (Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅)
    • $sub β€” ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚ (Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚)
  3. ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚Ρ‹ (Contexts) β€” иСрархия исполнСния с доступом ΠΊ:

    • $ent β€” тСкущая ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ
    • $rel β€” Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅
    • $obj β€” Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚
    • $sub β€” Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ особСнности

  • Π”Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ β€” описаниС Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Π° Π½Π΅ ΠΊΠ°ΠΊ
  • АвтоматичСский ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌ β€” ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΡΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ, массивы β€” ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ
  • Π“ΠΎΠΌΠΎΠΈΠΊΠΎΠ½ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ β€” ΠΊΠΎΠ΄ ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡƒΡŽ JSON-структуру
  • Π Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ β€” ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· DLL-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ
  • РСфлСксия β€” ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сСбя

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

{
  "$rel/result": {
    "$obj": 1,
    "$rel": "+",
    "$sub": 1
  }
}

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: result = 2

Π‘ΠΎΠ»Π΅Π΅ слоТный ΠΏΡ€ΠΈΠΌΠ΅Ρ€

{
  "$rel": [
    {
      "$rel": "rmvm/load/dll",
      "$obj": {
        "PathFolder": "modules/",
        "FileName": "network.dll"
      }
    },
    {
      "$rel": "add_entity",
      "$obj": {
        "name": "ΠŸΡ€ΠΈΠΌΠ΅Ρ€ систСмы",
        "components": [
          { "$ref": "/entities/logger" },
          { "$ref": "/entities/database" }
        ]
      },
      "$sub": "$ent/system_id"
    }
  ]
}

English

Description

jsonRVM is a virtual machine for executing programs written in the declarative "Relations Model" (RM) language. Programs are represented in JSON format and interpreted by the virtual machine as bytecode.

Core Concepts

Relations Model is a metaprogramming language where everything is represented as entities and their relations:

  1. Entities β€” basic system elements as JSON objects:

    • Primitives: numbers, strings, booleans
    • Compound types: arrays, objects
    • References: $ref to other entities
    • Executable constructs: $rel, $obj, $sub
  2. Relations β€” define interactions between entities:

    • $rel β€” relation (controller)
    • $obj β€” object (input data)
    • $sub β€” subject (result)
  3. Contexts β€” execution hierarchy with access to:

    • $ent β€” current entity
    • $rel β€” current relation
    • $obj β€” current object
    • $sub β€” current subject

Key Features

  • Declarative approach β€” describe what to do, not how
  • Automatic parallelism β€” objects execute in parallel, arrays β€” sequentially
  • Homoiconicity β€” code and data share the same JSON structure
  • Extensibility β€” plugin support via DLL libraries
  • Reflection β€” programs can analyze and modify themselves

Example Program

{
  "$rel/result": {
    "$obj": 1,
    "$rel": "+",
    "$sub": 1
  }
}

Result: result = 2

Advanced Example

{
  "$rel": [
    {
      "$rel": "rmvm/load/dll",
      "$obj": {
        "PathFolder": "modules/",
        "FileName": "network.dll"
      }
    },
    {
      "$rel": "add_entity",
      "$obj": {
        "name": "Example system",
        "components": [
          { "$ref": "/entities/logger" },
          { "$ref": "/entities/database" }
        ]
      },
      "$sub": "$ent/system_id"
    }
  ]
}

ДокумСнтация / Documentation

Анализ ΠΈ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ / Analysis and Planning

  • analysis.md β€” Анализ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (ΡΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΈ слабыС стороны) / Project analysis (strengths and weaknesses)
  • plan.md β€” План развития ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° / Development roadmap

ВСхничСская докумСнтация / Technical Documentation

  • Doxygen докумСнтация β€” АвтогСнСрируСмая докумСнтация API
  • doc/Introduction.md β€” Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² МодСль ΠžΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ
  • doc/RVM.md β€” ОписаниС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹
  • doc/RM.md β€” Π€ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ описаниС МодСли ΠžΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ
  • doc/Dictionary.md β€” Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ

ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ модСль / Mathematical Model

  • doc/relations-model-ru.md β€” ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ описаниС МодСли ΠžΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… Ρ‚Π΅ΠΎΡ€ΠΈΠΈ мноТСств (Russian)
  • doc/relations-model-en.md β€” Mathematical description of Relations Model in set theory terms (English)
  • proofs/rocq/ β€” Π€ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Π°Ρ вСрификация Π½Π° языкС Rocq/Coq / Formal verification in Rocq/Coq

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ / Examples

  • examples/ β€” ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° МодСли ΠžΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ

Π‘Π±ΠΎΡ€ΠΊΠ° / Building

ВрСбования / Requirements

  • CMake 3.20+
  • C++17 compatible compiler
  • Windows (для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ DLL / for DLL support)

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ / Commands

mkdir build && cd build
cmake ..
cmake --build .

Запуск тСстов / Running Tests

cmake -DENABLE_TESTS=ON ..
cmake --build .
ctest

ИспользованиС / Usage

# ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ справку / Show help
rmvm.exe

# Π˜ΡΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ JSON-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ / Execute JSON program
rmvm.exe program.json

# Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ DLL-ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ / Load DLL vocabulary
rmvm.exe vocabulary.dll

# ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ / Show base vocabulary
rmvm.exe rmvm.exe

ЛицСнзия / License

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π»ΠΈΡ†Π΅Π½Π·ΠΈΡ€ΠΎΠ²Π°Π½ ΠΏΠΎΠ΄ MIT License:

Copyright Β© 2016-2021 Vertushkin Roman Pavlovich

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


Благодарности / Thanks

  • Vladimir Muravyev β€” ΠΏΠΎΠΌΠΎΡ‰ΡŒ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ тСрминологичСского Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π° МодСли ΠžΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ / Third-party Libraries

  • JSON for Modern C++ β€” Ρ€Π°Π±ΠΎΡ‚Π° с JSON
  • doctest β€” unit-тСстированиС
  • cpp-httplib β€” HTTP/HTTPS ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈ сСрвСр
  • xml2json β€” конвСртация XML Π² JSON
  • str_switch β€” switch для строк

About

json Relations (Model) Virtual Machine

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •