Code Review: HostingSeparation1

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

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs