Вопрос

Могу ли я запустить Squeak как ref (без графического интерфейса), где я могу войти, и оценить выражения SmallTalk? Я знаю, что изображение по умолчанию не позволяйте этому. Есть ли какая-либо документация о том, как создать минимальное изображение, которое можно получить доступ из командной строки?

Это было полезно?

Решение

Вот (Hackish) решение: Во-первых, вам нужен OSProcess, поэтому запустите это в рабочем пространстве:

Gofer new squeaksource:'OSProcess'; package:'OSProcess';load.

Далее положите это в файл repl.st:

OSProcess thisOSProcess stdOut 
  nextPutAll: 'Welcome to the simple Smalltalk REPL'; 
  nextPut: Character lf; nextPut: $>; flush.
[ |input|
  [ input := OSProcess readFromStdIn.
    input size > 0 ifTrue: [
      OSProcess thisOSProcess stdOut 
        nextPutAll: ((Compiler evaluate: input) asString; 
        nextPut: Character lf; nextPut: $>; flush 
    ]
  ] repeat.
]forkAt: (Processor userBackgroundPriority)

И последний, запустите эту команду:

squeak -headless path/to/squeak.image /absolute/path/to/repl.st

Теперь вы можете повеселиться с alltalk repl. Не забудьте ввести в команду:

Smalltalk snapshot:true andQuit:true

Если вы хотите сохранить ваши изменения.

Теперь, на объяснение этого решения: OSPROCESS - это пакет, который позволяет запускать другие процессы, читать из stdin и записывать на STDOUT и STDERR. Вы можете получить доступ к Stdout AttachableShileSeReStream с OSProcess thisOSProcess (текущий процесс, ака Squeak).

Далее вы запускаете бесконечную петлю в UserBackgroundPriority (чтобы позволить другим процессам работать). В этой бесконечной петле вы используете Compiler evaluate: Для выполнения ввода.

И вы запускаете это в скрипте с изображением без головы.

Другие советы

По состоянию на PHARO 2.0 (и 1,3 / 1.4 с фиксией, описанным ниже), больше нет необходимых взломов. Следующий фрагмент превратит ваше Vanilla Pharo Image на сервер REPL ...

От https://gist.github.com/2604215.:

"Works out of the box in Pharo 2.0. For prior versions (definitely works in 1.3 and 1.4), first file in https://gist.github.com/2602113"

| command |
[
    command := FileStream stdin nextLine.
    command ~= 'exit' ] whileTrue: [ | result |
        result := Compiler evaluate: command.
        FileStream stdout nextPutAll: result asString; lf ].

Smalltalk snapshot: false andQuit: true.

Если вы хотите, чтобы изображение всегда было reft, поставьте код в #Startup: метод; В противном случае пропустите скрипт в командной строке, когда вы хотите, чтобы REPL MODE, как:

"/path/to/vm" -headless "/path/to/Pharo-2.0.image" "/path/to/gistfile1.st"

Проэкт http://www.squeaksource.com/securesqueak.html. Включает в себя пакет REP, который может обеспечить большую часть того, что вы ищете.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top