Ruby Forum IronRuby > Code Review: HostingSeparation1

Posted by Tomas Matousek (Guest)
on 01.05.2008 20:20
Attachment: HostingSeparation1.diff (139,4 KB)
(Received via mailing list)
tfpt review /shelveset:HostingSeparation1;REDMOND\tomat


DLR, HAPI, Nessie and all languages.

A step towards full HAPI/DLR separation and fixes of some 
inconsistencies with the spec.

Details:

Splits TokenCategorizer class into two classes: TokenizerService 
(language API) and TokenCategorizer (HAPI). TokenizerService is what 
languages implement, it could be either a base class for language 
tokenizers or it could delegate to the language tokenizer - that's up to 
the language.

Moves TokenInfo, TokenCategory, TokenTriggers out of Hosting namespace - 
these are shared concepts among HAPI, DLR and languages.
Moves and renames EngineTextContentProvider to 
Microsoft.Scripting.LanguageBoundTextContentProvider (it was an internal 
helper class in Hosting used from M.S.).
Removes Hosting.CodeSenseProvider - it's not used.

Removes differences from specification:

-          CompiledCode - renames, adds and remissing ones, removes 
CreateOptimizedScope. Adds parameter-less Execute() that executes in an 
optimized scope. We need to revisit optimized scopes, but this is needed 
for now.

-          ScriptCode - adds parameter-less Run() that executes the code 
in an optimized scope. Consolidates optimized scope execution from 
SourceUnit and CompiledCode.

-          ScriptRuntime - adds CreateScope, Operations, 
CreateOperations. Removes Platform and DomainManager properties, they 
are duplicating existing members.

-          ScriptDomainManager - makes ExecuteSourceUnit private.

-          SourceUnit, ScriptSource - removes ToString(). It was there 
just to display the path in debug watches, which is better done via 
DebuggerDispay attribute.

Fixes bug in 
ScriptDomainManager.LanguageRegistration.LoadLanguageContext - it wasn't 
thread-safe. Two different language contexts could have escaped the 
method.

Adds missing methods to HostingHelpers. These are supposed to be used by 
languages/frameworks that implement their hosting API on top of DLR 
HAPI.

Tomas