Описание тега maglev

MagLev - это 64-битная реализация с открытым исходным кодом языка программирования Ruby и библиотек, созданная на основе виртуальной машины VMware GemStone/S 3.1.

MagLev

MagLev - это реализация ruby, которая позволяет постоянно хранить объекты ruby. Цитирование с сайта MagLev:

MagLev - это быстрая, стабильная 64-разрядная реализация с открытым исходным кодом языка программирования Ruby и библиотек, созданная на основе виртуальной машины VMware GemStone/S 3.1.

Почему это отличается

На первый взгляд, MagLev - это просто еще одна реализация ruby ​​1.8.7. Большая разница между MagLev и другими интерпретаторами ruby ​​заключается в том, что он несет с собой свою собственную базу данных. Это не просто обычная база данных sqlite3, которая живет в своем собственном файле, это полностью постоянное хранилище объектов, которое позволяет хранить любые объекты, иерархии наследования и объектные отношения. Поэтому называть это просто "базой данных" - это грубое преуменьшение. Однако введение новой модели сопряжено с новыми обязанностями, поскольку модель MagLev не совсем подходит для рельсов,и она не совсем совпадает с моделью Smalltalk, в которой все в изображении является постоянным. Позвольте мне попытаться суммировать это в небольшой таблице:

            | Rails               | Maglev              | Smalltalk 
------------+---------------------+---------------------+----------------------- 
data        | database            | image / stone       | image / stone 
------------+---------------------+---------------------+----------------------- 
logic/code  | files/VCS           | ?files/VCS?/image   | ?files/VCS?/image 
------------+---------------------+---------------------+----------------------- 
classes are | open, transient     | open, persistent    | invariant, persistent 
            |                     | single definition   | version history 
------------+---------------------+---------------------+----------------------- 
structure   | DB-structure        | class definitions,  | class definitions, 
definition  |                     | persistent objects  | all objects persist 
------------+---------------------+---------------------+----------------------- 
metadata    | schema.rb automatic | ??                  | ?not necessary? 
------------+---------------------+---------------------+----------------------- 
migrate     | database structure  | data structure      | data structure 
            |                     | some code changes   | all code changes 
------------+---------------------+---------------------+----------------------- 
deployment  | deploy VCS delta    | ?deploy VCS delta?  | ?run all data and 
            | run all migrations  | run all data and    | code migrations? 
            |                     | some code migrations| 

На данный момент существует мало явных метаданных для объектов MagLev, только рубин methods метод, который не включает информацию о типе. Для основных рельсов это не должно иметь большого значения, так как schema.rb кажется, в основном используется для правильного приведения данных базы данных, так как в основном он встречается с соединением SQL в виде строки Маглеву не нужно этого делать, поскольку он очень хорошо знает тип хранимых данных.