Можно ли сделать Squeak VM встроенной в C без каких-либо плагинов? - PullRequest
3 голосов
/ 14 июня 2011

Я хочу использовать Smalltalk в качестве встроенного механизма DSL в C. Не требуется никаких плагинов, и я создам всю пользовательскую среду. Так что почти ObjectEngine останется. Это возможно? Я в настоящее время пытаюсь, однако любая помощь будет оценена.

- редактировать -

Любое руководство по внедрению Smalltalk также будет оценено. (кроме GNU Smalltalk. Из-за его лицензии ...)

Ответы [ 3 ]

1 голос
/ 15 июня 2011

Dolphin Smalltalk от Object Arts может быть развернут как dll.Но вам нужно будет проверить лицензию для вашего конкретного случая использования, и это только для Windows.

1 голос
/ 15 июня 2011

Это сложно сделать с Pharo / Squeak:

  1. Механизм объекта зависит от многих примитивов, поэтому необходимо наличие многих плагинов.Некоторое время назад большинство плагинов не могли быть скомпилированы статически.Я не знаю, так ли это до сих пор?
  2. Создать целую пользовательскую среду сложно, потому что это, скорее всего, означает сокращение существующего изображения.Существуют различные проекты, которые пытаются создать инфраструктуру для начальной загрузки новых образов, но я пока не видел рабочих решений.

Как пишет Davorin, Dolphin Smalltalk можно развернуть как DLL.Точно так же это возможно с Cincom Smalltalk и Smalltalk / X.Все эти Smalltalk коммерческие.

Подводя итог, вам, вероятно, лучше взглянуть на Lua или Python, которые уже применялись в вашем контексте уже много раз.

1 голос
/ 14 июня 2011

Было когда-то предложение для GSoC, но так и не было сделано:

Упаковка Squeak as DLL

Обычный подход к тому, чтобы сделать библиотеки, написанные на определенном языке, доступными для других языков, состоит в том, чтобы упаковать библиотеку как библиотеку с динамической загрузкой или как общий объект (далее dll). Адаптация этого подхода к Squeak позволила бы использовать код Smalltalk для более широкой аудитории и обеспечила бы альтернативные подходы к развертыванию приложений Squeak, упрощая создание плагинов Squeak для таких систем, как Apache, веб-браузеры и так далее. Существует два подхода, которые можно назвать пассивными или активными. В пассивной архитектуре dll Squeak неактивен, пока не будет вызван из другого языка, и работает только до тех пор, пока результат не будет получен от вызывающей стороны. В активной архитектуре процесс загрузки библиотеки DLL заставляет Squeak запускаться в своем собственном потоке и принимать входящие вызовы от других потоков в форме рандеву. Пассивный подход легче построить, но он менее полезен; один не имеет полного спектра возможностей Squeak, таких как легкие процессы, задержки и т. д.

Целью проекта будет реализация пассивного или активного подхода в зависимости от интересов и способностей студента. Цель состоит в том, чтобы сделать Squeak более полезным для пользователей и разработчиков приложений. Необходимо решить много технических задач, связанных с кодированием на Smalltalk и C, а также с использованием сленга гибридного языка Smalltalk-C, на котором написана Squeak VM.

Преимущества для студента включают в себя глубокое понимание dll, взаимодействие с динамическими языками, интерфейсами внешних функций и Squeak VM. Студент также получит понимание архитектурных проблем, рассмотрев множество компромиссов между пассивным и активным подходами.

Преимущества для сообщества Squeak будут заключаться в возможности упаковать и развернуть приложения Squeak гораздо шире, чем раньше.

...