+2009-01-26 Marek Habersack <mhabersack@novell.com>
+
+ * BuildManagerDirectoryBuilder.cs: added support for fake virtual
+ paths.
+
+ * CompilationException.cs: added a Message override to make error
+ messages more useful.
+
+2009-01-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
+
+ * AspComponentFoundry.cs: no need to throw. Caller handles a null
+ return value.
+
+2009-01-23 Marek Habersack <mhabersack@novell.com>
+
+ * BuildManager.cs: use -1 for infinite wait in calls to
+ Acquire{Reader,Writer}Lock ().
+
+2009-01-22 Marek Habersack <mhabersack@novell.com>
+
+ * XsdBuildProvider.cs: added missing BuildProviderAppliesTo
+ attribute.
+
+ * BuildProvider.cs: added new internal virtual method,
+ ExtractDependencies() whose purpose is to extract virtual path
+ dependencies without compiling the code, if possible.
+
+ * TemplateBuildProvider.cs: implemented the new
+ ExtractDependencies () method which uses regular expressions to
+ extract file dependencies from the source without having to
+ compile the file.
+
+ * CompilationException.cs: added a new public property, Results,
+ which returns the compilation results.
+
+ * BuildProviderGroup.cs: added. A simple class descending from
+ List <BuildProvider> which is used to hold a compilation batch -
+ that is a collection of BuildProvider instances.
+
+ * BuildManagerDirectoryBuilder.cs: new class which takes care of
+ generating compilation batches for the requested virtual path. A
+ set of batches is generated from files found in the same virtual
+ directory as the requested virtual path and all of the
+ dependencies of those files. All files are grouped in batches
+ within which no file depends upon its siblings. An attempt is made
+ to sort the batches from the "least dependent" to the "most
+ dependent" batches - i.e. the batches which do not depend on other
+ batches go to the top.
+ Code generating the batches now correctly detects dependency loops
+ and throws an exception when one is encountered.
+ Batches are represented as instances of a new class -
+ BuildProviderGroup.
+
+ * BuildManagerCacheItem.cs: added. Contains all the compilation
+ result information needed by BuildManager. See below.
+
+ * BuildManager.cs: complete batch building rewrite:
+ - only one build lock is held instead of a set of compilation
+ tickets. Only one thread can compile anything at one given
+ time.
+ - retrieving types from the build cache now uses a slim rw lock,
+ so that readers aren't blocked while compilation is in
+ progress. Writer lock is acquired only when adding a newly
+ compiled type to the build cache and when removing it after its
+ dependencies made it invalid.
+ - assembly references for each compilation are now collected
+ dynamically as the source is being compiled, this removed a lot
+ of complexity in dealing with assembles containing conflicting
+ types. As a consequence right now there may exist several
+ loaded assemblies containing the same type, but only the latest
+ of them will be used in new compiles.
+ - the thread compiling code can recurse into the Build method
+ which causes the recursively referenced code to be compiled
+ into a separate, uniquely named, assembly. This deals with all
+ recursion loops and dependency problems.
+ - automatic app domain restart after a certain number of compiles
+ is enabled now.
+ - improved compilation error handling. If a compilation error
+ occurs, the code attempts to recompile the assembly up to 3
+ times, each time removing from the batch the files/virtual
+ paths which failed parsing/compilation. If the attempts failed,
+ another one is made to compile only the virtual path requested
+ by the calling code. Only should that fail a compilation
+ exception is thrown. All the compilation errors are written to
+ stdout if the application is in the debug mode.
+ - changed assembly naming. It now generates assembly names based
+ on whether the compilation is recursive and whether the batch
+ being compiled contains more than one code unit or
+ not.
+ - compilation results are now stored in the cache as instances of
+ the new BuildManagerCacheItem class, which contains all the
+ information required by BuildManager to return types,
+ assemblies, dependencies etc.
+ - GetReferencedAssemblies now correctly returns only the
+ assemblies defined in the .config files.
+ - GetVirtualPathDependencies does not need to compile code
+ anymore in order to extract virtual path dependencies. New code
+ in BuildProvider.ExtractDependencies () takes care of that.
+ - a BuildManagerDirectoryBuilder class instance is used to
+ generate compilation batches.
+ - if SYSTEMCOR_DEP is undefined use ReaderWriterLock instead of
+ ReaderWriterLockSlim
+
+ * AssemblyBuilder.cs: added support for keeping track of which
+ code unit was generated by which BuildProvider andr which
+ BuildProvider produced a given source file. Both changes serve the
+ purpose of dealing with compilation errors in BuildManager.
+
+ * ApplicationFileBuildProvider.cs: added missing
+ BuildProviderAppliesTo attribute
+
+2009-01-14 Marek Habersack <mhabersack@novell.com>
+
+ * AspGenerator.cs: implemented a work around which allows the
+ server controls embedded in client tag attributes to be parsed and
+ compiled.
+
+2009-01-13 Marek Habersack <mhabersack@novell.com>
+
+ * TemplateControlCompiler.cs, AspGenerator.cs, BaseCompiler.cs,
+ GlobalAsaxCompiler.cs, PageThemeCompiler.cs: updates related to
+ ControlBuilder cleanup.
+
+2009-01-12 Marek Habersack <mhabersack@novell.com>
+
+ * TemplateControlCompiler.cs: do not generate #line pragmas for
+ plain strings. Fixes bug #461214
+
+2008-12-11 Marek Habersack <mhabersack@novell.com>
+
+ * BaseCompiler.cs: added a new method, InitializeType, to be
+ overriden in child classes when any class initialization needs to
+ be performed before methods, constructors and fields are created.
+
+ * TemplateControlCompiler.cs: if the parser has any custom
+ controls registered, compile them here - in the InitializeType
+ method.
+
+2008-12-10 Marek Habersack <mhabersack@novell.com>
+
+ * ParseException.cs: made serializable.
+
+ * PageCompiler.cs: CreateStronglyTypedProperty calls
+ AddReferencedAssembly to add type's assembly to the unit's
+ references after the typed property has been created.
+
+ * BaseCompiler.cs: added a new helper method,
+ AddReferencedAssembly to be used whenever an assembly location
+ needs to be added to the compilation unit's list after the parsing
+ is done (e.g. when processing PreviousPageType or MasterPageType
+ properties in PageParser)
+
+2008-12-08 Marek Habersack <mhabersack@novell.com>
+
+ * TemplateControlCompiler.cs: use the correct regex match group
+ index in SanitizeBindCall (), fixes bug #457011
+
+2008-12-05 Marek Habersack <mhabersack@novell.com>
+
+ * BuildManager.cs: attempt to enter the compilation critical
+ section with a timeout up to 3 times before giving up. This avoids
+ deadlocks in situations where there are two virtual directores
+ each containing user controls referencing user controls from the
+ other directory.
+
+2008-12-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
+
+ * AspParser.cs: reset to the next character in a partial match in case
+ of failure. Fixes bug #314688.
+
+2008-12-01 Marek Habersack <mhabersack@novell.com>
+
+ * TemplateControlCompiler.cs: instead of adding ContentPlaceHolder
+ instances to the ContentPlaceHolders collection when the
+ placeholder is instantiated in the control build method, collect
+ the ids and store them in ContentPlaceHolders inside the
+ constructor. Fixes bug #449970
+ For each content placeholder generate a public virtual property
+ named "Template_PLACEHOLDERID", this is compatible with what .NET
+ does.
+
+ * BaseCompiler.cs: added new virtual method,
+ AddStatementsToConstructor, which is called just before
+ CreateConstructor returns.
+
+2008-11-25 Marek Habersack <mhabersack@novell.com>
+
+ * AspComponentFoundry.cs: GetComponentType methods replaced with
+ GetComponent returning an instance of AspComponent which fully
+ describes the registered item. Components are cached, indexed by
+ full tag name.
+
+ * AspComponent.cs: added
+
+2008-11-21 Marek Habersack <mhabersack@novell.com>
+
+ * CompilationException.cs: made serializable.
+
+ * TemplateControlCompiler.cs: make the Bind regex stricter.
+ When creating Eval expression from Bind, replace single quotes
+ with double quotes. Fixes bug #447597
+ When processing Bind expressions and the regex doesn't match,
+ throw an exception.
+
+2008-11-17 Gonzalo Paniagua Javier <gonzalo@novell.com>
+
+ * AspTokenizer.cs: if there's a newline between the opening server tag
+ and any other special character, treat the block as a code-render
+ block.
+ Bug #445889 fixed.
+
+2008-11-14 Marek Habersack <mhabersack@novell.com>
+
+ * TemplateControlCompiler.cs: treat Eval and Bind expressions as
+ verbatim code. The only difference between the two is that in the
+ latter case Bind is replaced with Eval in the output code. Fixes
+ bug #444725
+ If BindingDirection of the parent template builder is OneWay in
+ RegisterBindingInfo, do not throw an exception but simply do not
+ register the binding.
+
+2008-10-29 Marek Habersack <mhabersack@novell.com>
+
+ * BuildManager.cs: seal the internal classes.
+ Remove unused BuildCacheItem.ValidBuild property.
+
+2008-10-16 Marek Habersack <mhabersack@novell.com>
+
+ * TemplateControlCompiler.cs: IsWritablePropertyOrField doesn't
+ use PropertyInfo.CanWrite to check whether the property is
+ writable anymore, it calls GetSetMethod (false) instead.
+
+2008-10-10 Marek Habersack <mhabersack@novell.com>
+
+ * TemplateControlCompiler.cs: allow whitespace around parentheses
+ in the Bind and Eval expressions.
+
+2008-10-09 Marek Habersack <mhabersack@novell.com>
+
+ * BuildManager.cs: if monoSettings section is found in the
+ system.web section in web.config, use its contents to augment
+ compiler configuration. Used to work around the issue reported in
+ bug #433806
+
+2008-10-08 Marek Habersack <mhabersack@novell.com>
+
+ * TemplateControlCompiler.cs: templates must be instantiated even
+ for builders which process children as properties.
+
+2008-10-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
+
+ * AssemblyBuilder.cs: use CodeBase to get to the original assembly
+ path because Location might point the the shadow copy. Bug #409646
+ and others fixed.
+
+2008-10-03 Marek Habersack <mhabersack@novell.com>
+
+ * BuildManager.cs: if an assembly fails to build out of a batch of
+ files, extract the virtual path that was requested by the client
+ and attempt to compile it alone.
+
+2008-09-29 Marek Habersack <mhabersack@novell.com>
+
+ * BuildManagerRemoveEntryEventHandler.cs: added
+
+ * BuildManager.cs: added a static event to notify interested
+ parties when an entry is removed from the buildCache. Fixes bug
+ #429926.
+
+2008-09-26 Marek Habersack <mhabersack@novell.com>
+
+ * BuildManager.cs: when creating a cache entry for a virtual path,
+ make it depend on a list of files built recursively from all the
+ virtual path's dependencies. Fixes bug #430114
+
+2008-09-24 Andreia Gaita <avidigal@novell.com>
+
+ * AspParser.cs: When parsing text which contain xml tags that resemble
+ the end string, append the original text instead of the end string,
+ because the casing might not match between the two. Fixes #320445
+
+2008-09-23 Marek Habersack <mhabersack@novell.com>
+
+ * AspGenerator.cs: ignore whitespace only if it's between
+ CodeRender blocks, not between DataBinding and
+ CodeRenderExpression.
+
2008-09-01 Marek Habersack <mhabersack@novell.com>
* BaseCompiler.cs: AssignAppRelativeVirtualPath works with