Smalltalk を C の組み込み DSL エンジンとして使用したいと考えています。プラグインは不要で、カスタム環境全体が作成されます。したがって、ObjectEngine はほとんど残ります。これは可能ですか?私は現在試していますが、どんな助けも大歓迎です。
- 編集 -
Smalltalk 実装の埋め込みガイダンスも歓迎します。(GNU Smalltalk を除く。ライセンスのため...)
Object Arts の Dolphin Smalltalk は dll としてデプロイできます。ただし、特定のユース ケースのライセンスを確認する必要があります。これは Windows のみです。
これは、Pharo/Squeak では難しいことです。
Davorin が書いているように、Dolphin Smalltalk は DLL として展開できます。同様に、これは Cincom Smalltalk と Smalltalk/X でも可能です。ただし、これらの Smalltalk はすべて商用です。
要約すると、すでに何度もコンテキストに適用されている Lua や Python を見たほうがよいでしょう。
かつて GSoC の提案がありましたが、実行されませんでした:
Squeak を DLL としてパッケージ化する
特定の言語で記述されたライブラリを他の言語で使用できるようにするための従来のアプローチは、ライブラリを動的ロード ライブラリまたは共有オブジェクト (以降 dll) としてパッケージ化することです。このアプローチを Squeak に適用することで、より多くのユーザーが Smalltalk コードを使用できるようになり、Squeak アプリケーションの代替展開アプローチが可能になり、Apache や Web ブラウザーなどのシステム用の Squeak プラグインの作成が容易になります。パッシブまたはアクティブと呼ばれる、大きく 2 つの異なるアプローチがあります。パッシブ アーキテクチャでは、Squeak dll は別の言語から呼び出されるまで非アクティブであり、結果が呼び出し元に応答されるまでのみ実行されます。アクティブなアーキテクチャでは、dll をロードする行為により、Squeak が独自のスレッドで起動し、ランデブーの形で他のスレッドからの着信呼び出しを受け入れます。受動的なアプローチは構築が容易ですが、有用性は低くなります。軽量プロセス、遅延などの Squeak 機能をすべて備えているわけではありません。
このプロジェクトの目的は、生徒の興味と能力に応じて、受動的または能動的アプローチのいずれかを実装することです。目標は、Squeak をユーザーとアプリケーション デプロイヤーの両方にとってより広く役立つものにすることです。Smalltalk と C の両方のコーディング、および Squeak VM が記述されている Smalltalk-C ハイブリッド言語 Slang の使用を含む、満たすべき多くの技術的課題があります。
学生にとっての利点には、DLL、動的言語へのインターフェース、外部関数インターフェース、および Squeak VM の詳細な理解が含まれます。また、生徒は、パッシブ アプローチとアクティブ アプローチの間の多くのトレードオフを検討することで、アーキテクチャの問題を理解できるようになります。
Squeak コミュニティにとっての利点は、Squeak アプリケーションを以前よりもはるかに幅広くパッケージ化して展開できることです。