Was this page helpful?

Releases

    Table of contents
    No headers

    Dream conforms to MindTouch's version naming convention of using thematic names in alphabetical order.  Dream releases are named after colors.

    Release When Description
    Aqua July 24, 2006 First public release of Dream.
    Runtime:
    • .Net 2.0 and Mono 1.1.16 compatible
    • console host application
    • complete asynchronous message processing pipeline
    • http and direct in-memory message transports
    • JSON and HTML document encodings for XML
    • automatic service state serialization
    Services:
    • Host
    • Storage
    • Directory
    • Events
    • Statistics
    • Mount
    • FileSystemMount
    • Redirect
    • Timer
    Beryl October 14, 2006 Runtime:
    • new XML document encodings: PHP, Versit, xSpan
    • new prolog/epilog handling for features
    • support for cookies
    • new dream-request processing options
    • new async plug processing
    Services:
    • HostService (new features)
    • Log4Net
    • Events (new features)
    • Directory (new features)
    Misc:
    • PHP integration
    Crimson March 23, 2007 Runtime:
    • much improved performance
    • many improvements to XDoc, Plug, and XUri
    • asynchronous programming with iterators
    • managed global state for asynchronous free-threaded continuations
    • improved Dream attributes
    • services identified by global URIs (SIDs)
    • support for path parameters based on URI templates (e.g. /path/{param}/)
    • support for segment parameters (e.g. /segment;param/)
    • unified access to path & query parameters
    • DreamKernel (formerly DreamEnvironment) now fully decoupled from HTTPListener transport (allows embedding int ASP.Net, etc.)
    • service URIs can now be a mixture of parameters and constant symbols (e.g. /name/{param}/action)
    Toolbox:
    • mindtouch.apitest makes it easy to interact with Dream services
    • mindtouch.blueprints generates publishable blueprint XML documents from compiled services
    Denim September 24, 2007 Runtime:
    • many improvement to XDoc
    • more asynchronous core methods
    • support for co-routines
    • improved logging support for DreamHost
    • support for multi-home host names (i.e. host name is relative to incoming request)
    • added xml diff engine (XDocDiff)
    • added xml structural check engine (XDocCop)
    • hiding of many Dream infrastructure calls in debugger
    • stability improvements
    Services:
    • AtomService
    • PrivateStorageService
    Toolbox:
    • mindtouch.blueprint published DreamService documentation to any Deki Wiki site
    Emerald

     
    February 27, 2008

     
    Runtime:
    • performance tuning
    • memory footprint tuning
    • simpler instantiation of the host service
    • XDoc diffing and 3-way merge
    • catch handlers for asynchronous operations
    • eliminated all uses of NameValueCollection (it's slow, a memory hog, and buggy)
    • much improved support for instantiating objects from a catalog
    • support for independent culture per request for multi-lingual services
    Emerald+ March 17, 2008 Runtime:
    • (bug 3504) audited all Dictionary<string, V> declaration to ensure they are culture invariant
    • (bug 3493) added "server-path" config parameter that tells the host what the public URI path is
    • (bug 3493) append 'server-path' to 'server-name' during initialization
    • (bug 3495) fixed 'UnescapeString()' escaping issue
    • (bug 3460) added 'AsInnerText' to retrieve all nested text in a node
    • (bug 3449) 'RemoveAll()' and 'Remove()' now also works on attribute nodes
    • (bug 3459) don't throw exceptions when the same file is PUT twice
    • (bug 2426) features links in /@about are wrong
    • (bug 3521) added 'AtPath()' to run xpath expression with custom namespaces
    • (bug 3520) always define default namespace prefix (_)
    • (bug 3522) refactored computation for public uri
    Emerald++ May 5, 2008 Runtime:
    • support for ICredentials with Plug
    • support for IPv6 based network addresses
    • support for HTTP Range headers
    • enhanced methods for manipulating XML documents with XDoc
    • improved performance for deployments with large number of aliases
    • removed status filters on service features
    • and other bug fixes
    Emerald+++ June 3, 2008

    Runtime:

    • support for XML digital signatures with XDoc
    • optimized this[string] xpath selector on XDoc for simple paths
    • response caching in DreamService
    • optimized text analysis in XDocDiffUtil
    • (bug 4064) fixed comparison bug on XUri
    • (bug 4136) preserve whitespace when parsing XML documents with XDocFactory
    • allow wildcard element (i.e. "*") in definitions for XDocCop
    Emerald+4 July 2, 2008

    Runtime:

    • fixed bug with HttpHandler always returning 200 under IIS
    • recognize proper application root under IIS
    • added TEXT_UTF8 to MimeType
    • optimized Diff method in ArrayUtil
    Emerald+5 July 28, 2008

    Runtime:

    • split XUri class into two files so that the base functionality can be used in other projects without using Dream
    • GET/HEAD/OPTIONS requests no longer send in a content-type unless explicitly stated
    • fixed XUri comparison when query parameters are present
    • escape '?' in XUri query parmaters since IIS and Apache handle it differently
    • dispose of iterator in coroutines when done
    • allow overriding GET verb if override is HEAD or OPTIONS
    • made 'Set-Cookie' header RFC 2965 compliant
    Emerald+6 September 4, 2008
    (October 21, 2008)

    License:

    Runtime:

    • added WebDAV status codes
    • services may check for optional activation key on startup
    • services can now provide custom OPTIONS handler
    • DreamMessage.AsDocument() now throws an exception if content is non-empty and cannot be parsed into an XML document
    • XDoc now always preserves whitespace
    • XDocDiff no longer splits words separated by underscore or digits separated by dot/comma
    • Accept-Language header can now always instantiate a specific-culture, even if a neutral culture is specified (e.g. "de" vs "de-ch")
    • fixed issue in XDocCop that was adding unnecessary &nbsp; characters during validation
    • fixed issue in TaskTimer that could cause the timer queue to stall and not fire anymore
    Emerald+7 December 8, 2008

    Runtime:

    • MimeType: added support for recognizing the proper mime-type for .pdf files
    • XUri: improved error exception description when ChangePrefix() fails
    • XUriMap: applied fix from trunk
    • XDoc: don't throw exceptions for RemoveNodes() or RemoveAttr() when selection is empty
    Fire February 26, 2009 Runtime:
    • Async
      • Added ForkThread to run forked code on dedicated background thread instead of threadpool thread
    • BlockingQueue
      • created BlockingQueue<T> for thread-safe producer/consumer scenarios
    • Cookies
      • Refactored Dream cookie logic to use DreamCookie rather than native Cookie class
      • DreamCookie automatically handles local:// <-> http:// transition
    • CookieJar
      • will consider both public and local variants of a URL when fetching cookies
    • CultureUtil
      • Methods for retrieving non-neutral culture
    • DreamContext
      • added User property to retrieve and set IPrincipal
      • ServerUri uses Ip instead of Hostname for default derivation
      • PublicUri can be overriden with different value on a per request basis
      • Skipping IPv6 addresses in host address inspection when trying to derive PublicUri
    • DreamHost
      • Fixed incorrect error message when script fails to load
      • Posting against "services" to create a services now returns a result document with the internal and private keys
    • DreamHostService
      • DreamHostService: set IPrincipal for authenticated user
      • Enumerates all loaded Assemblies, their version, build date and if applicable svn info at /host/version
    • DreamMessage
      • added Ok constructor using array of KeyValuePair<string, string>, which creates a form-encoded message (replaces similar constructor which was based on XUri)
      • FromFile() no longer catches exceptions (e.g. FileNotFound) and let's them pass through instead
    • DreamService
      • Now contains a PubSub plug pointing at the default (or configured) PubSubService
      • Added DreamContext as parameter to DetermineAccess
    • DreamServiceState
      • deprecated
    • Email Service
      • Can send smtp email messages
      • Accepts multiple smtp server configurations indexed by caller determined key
    • HttpHandler
      • fetch IPrincipal for current request
    • HttpPlugFactory
      • use ToUri() on XUri to get a properly escape Uri
    • HttpTransport
      • fetch IPrincipal for current request
    • Plug
      • Allows overring the global CookieJar with a custom CookieJar
      • use new DreamMessage constructor in PostQuery() to create form-encoded messages
    • PlugHandler
      • Now also receives the un-normalized Uri
    • Plug mocking tools
      • MockPlug
        • Create a callback to incerpect Plug calls for testing
      • AutoMockPlug
        • Record/Playback/Verify style mocking tool for Plug calls
    • Publish & Subscribe Service
      • Event publish and subscribe service
      • Can chain multiple services together with subscription progragation both up and down stream
    • ResourcePlug
      • set caching header and respond with Not-Modified (304) when the same resource is requested again by a conditional GET
    • Storage Service / Private Storage Service
      • Consolidated public and private storage into a single service and provide a shared private storage services as the default service to all services
    • StringUtil
      • 'ByteFromHexString()' now works for strings of arbitrary length
      • added RepeatPattern() helper method
      • 'ReplaceWithDelimiters()' now works even when the start and stop delimiter are the same
    • XDoc
      • added ReverseList() method to reverse selection
    • XDocCop
      • don't automatically replace CDATA section with their text equivalents
      • added 'Verify()' function to check if a document would be affected if 'Enforce()' were invoked
    • XDocDiff
      • compute optionally attribute changes as well
      • fixed bug in how attribute changes are tracked
      • Highlight() now de-interleaves text changes when generating a composite diff document
      • highlight changes in before and after documents as well
    • XException
      • added XML deserialization for exceptions
    • Xuri
      • improved error reporting for 'ChangePrefix()' method
      • when converting to Uri, escape trailing '.' characters in segments as Uri will otherwise remove them
    • XUriChildMap
      • As opposed to XUriMap which returns the best matching entry for a XUri, XUriChildMap will returns a collection of all XUris matching an XUri.
      • Accepts wildcard as map entries containing hostport and path trailing wildcards
      • Can be made scheme insensitive
    Garnet August 24, 2009

    Runtime:

    • Plug
      • Added ext-http:// and ext-https:// XUri schemes to force connections for locally available endpoints to go across the wire
      • Added InvokeAsyncEx()
      • DreamContext & XriPlug changed to use InvokeAsyncEx()
    • MockPlug
      • Updated MockPlug to always win for any URL it might handle
      • Added AutoMockPlug class for easily creating Arrange/Act/Assert style testing of DreamServices 
    • Dream
      • Created IServiceActivator to separate service instantiation by Dream for possible substitution interception by an IoC Container
      • Fixed request uri handling for HttpHandler and HttpTransport
      • Changed @api/host/version to include build date and svn info
    • Tasking
      • Deprecated TaskBehavior to be replaced by TaskEnv
      • Result
        • Returning/throwing a result is now done in a lock-free fashion
        • Added support for cancellation
        • Inlined RendezVousEvent into ResultBase
      • Coroutine
        • Inlined coroutine iteration loop to minimize number of nested delegate calls
        • Show name of function with missing result when possible
      • Introduced Task helpers for wrapping a delegate in a TaskEnv
      • Async
        • Async.Fork logic uses TaskEnv wrapper to capture current environment
        • ExecuteProcess: added try-catch around closing standard input stream
        • Added .From() for adapting existing asynchronous callbacks to Dream Async Method Pattern
        • Updated Read/Write to use the new From() methods
        • Added ForkThread to fork work onto a dedicated, non-threadpool thread
      • Added GlobalClock: Central clock that pings at regular intervals all instances that require regular maintenance
      • TaskTime: Using central GlobalClock instead of dedicated thread for regular scheduled maintenance work
    • Data
      • Added SLOW Sql logging to DataCommand
      • Revised how DbProviderFactories are discovered and accessed
      • Obsoleted DataCatalog constructor that was mysql specific
    • Misc
      • StringUtil
        • Added support hexadecimcal literal html entities to DecodeHtmlEntities()
        • Replaced InvariantCulture with Ordinal for string comparisons
      • Replaced all doc.opengarden.org with developer.mindtouch.com
      • Converted all solutions & projects to VS2k8
      • Various clean-up of improper disposal of IDisposables
      • Fixed Timezone bug in Dreamcookie (would render as UTC, without making sure datetime was actually utc)
      • SysUtil
        • Added IsMono() method to detect the mono runtime
        • Added Rethrow() method to rethrow an exception without destroying it's existing stack-trace (if possible)
        • Added CAS<T>() method for Lockfree operations
      • Threading
      • Added a number of lock-free collections for more efficient concurrent access
      • First version of new Threadpool
        • Currently has to be manually activated to displace standard threadpool
        • Provides distinct elastic workqueues
        • Provides work stealing mechanisms for workload balancing
        • Uses GloblalClock for thread maintenance work
        • DispatchThread: thread with local work-item queue that can be stolen from

    Services

    • PubSubService
      • PubSub Dispatcher: blocking on queued item execution to prevent excessive async task scheduling
      • refactored PubSub Dispatcher to no longer use throttling WorkQueue instead of IBlockingQueue
      • refactored PubSub.Dispatcher to use coroutines instead of methods to stay clear or ElasticThreadpool issue
      • refactored PubSubService /subscribers/{id} authorization logic to use an access-key token in query args or cookies
      • refactored separate Publish and Subscribe Uri's for DreamServices to use just PubSub, since pub and sub are irrevocably coupled for upstream and downstream chaining
    • EmailService
      • added ability for email service to have different configurations
      • added ability to set headers for emails
    Garnet+ October 26, 2009

    Runtime

    • Dream
      • DreamFeatureStage, XUri: removed lock around XmlNameTable (it's threadsafe now)
      • DreamHostService: show more information about XmlNameTable; added feature to list all strings in the XmlNameTable
      • DreamHostService: show stats for LockFreeXmlNameTable in GET:/status
      • DreamHostService, status.xslt: show app.config settings and avg. lookup overhead for global xml nametable
      • status.xslt: added conditional display of global LockFreeXmlNameTable statistics
    • Tasking
      • Result: changed 'AcceptCancel()' to 'Canceled()'
    • XDoc
      • XDoc: use XmlNameeTable from SysUtil
    • Misc
      • LockFreeXmlNameTable:
        • compute distribution differently by counting the number of keys for each level (instead of the buckets and their depths)
        • compute avg. lookup overhead
        • improved returned statistics about the XmlNameTable instance
      • MimeType: default charset for text/* is ASCII (not ISO-8859-1)
      • SysUtil: XmlNameTable capacity can be configured using "xmlnametable-capacity" in App.config
      • StringUtil: added custom hashcode methods
    Garnet++ December 18, 2009  Bug 7255: Cookie parsing was incorrect when comma present in unquoted value
     
    Hammerhead TBD    
    Indigo TBD    
    Jade TBD    
    Khaki TBD    
    Lapis TBD    
    Mocha TBD    
    Navy TBD    
    Opal TBD    
    Pearl TBD    
    Quartz TBD    
    Ruby TBD    
    Sapphire TBD    
    Topaz TBD    
    Ultramarine TBD    
    Violet TBD    
    White TBD    
    X TBD    
    Yellow TBD    
    Zenith TBD    
    Was this page helpful?
    Tag page
    You must login to post a comment.

    Copyright © 2011 MindTouch, Inc. Powered by