[squeak-dev] How to use Environments?

Jakob Reschke jakob.reschke at student.hpi.de
Fri Sep 16 12:50:26 UTC 2016


Hello,

I am having a look at Environments, but have not yet figured out, how
to operate them. I would like to create a new environment with an
additional binding for an existing class under another name, and load
a package in that new environment.

The most of a documentation I have found is http://wiki.squeak.org/squeak/6220
and I have tried the following so far:

testenv := Environment named: #TestEnv1.
testenv import: Smalltalk globals.
testenv from: Smalltalk globals import: { #String -> #MyString }.
testenv importSelf.
testenv exportSelf.

However, testenv valueOf: #MyString or testenv valueOf: #String both
return nil instead of the String class. Does it mean that the
from:import: did not work? It seems to only add a policy to my
environment, but no declarations or bindings.

For evaluating something in context of the environment, I have found
the EnvironmentLoader, but it does not seem to recognize the
additional binding either:

(EnvironmentLoader for: testenv) evaluate: 'MyString'. => nil
(EnvironmentLoader for: testenv) evaluate: 'String'. => nil

(at least the import of the original globals seems to have worked).

What steps am I missing?

Also it is not very convenient to make up strings of code everytime I
want to do something in the other environment, is there a better way?
Can I get a system browser for my environment (where saving a method
compiles it with the environment bindings in place)?

Best regards,
Jakob


More information about the Squeak-dev mailing list