-
Version 1.10 - fivefold speed boost, passing DLLs
* Runtime has again been reduced by a factor of about 5. This was necessary for our application, which yields about 2 million dependencies from its .IL files. The speedup is achieved by using special checkers for rules following certain patterns. For example, a rule My.Name.Space.MyClass ---> ** need not evaluate the right hand side of a dependency at all; and for the left hand side, a simple StartsWith is sufficient, instead of a full regular expression check. There are now about 9 heuristics for faster comparisons of common "rule patterns". For our project, this reduces the runtime from around 50 minutes to about 10 minutes. (Another speedup betwwen 2 and 3 can be expected with a migration to ANTLR 3; however, ANTLR 3 no longer supports the ! operator in lexer grammars, which makes migration harder than expected).
* DLL and EXE files can directly be passed to ILDASMDC. Internally, ILDASMDC will look for the registry keys HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\sdkInstallRootv2.0 and HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\sdkInstallRootv3.0, append \bin to it and try to run ILDASM.EXE from the resulting directories with options /NOBAR /UTF8 /QUOTE /LINE /OUT=.... With this feature, use of ildasm.bat is discouraged.
* The /r flag will now run dependency checking on an input file (IL, DLL, or EXE) only if it has changed since the last checker run. The information is stored as an empty file called ILDASMDCTouch#.tmp, where # is a hash code of the file's name. Currently, these "touch files" are never deleted and produce garbage in the temp folder.
* ILDASM is buggy in that it sometimes fills arbitrary binary garbage characters into the filename behind .line directives. Because of this, ILDASMDC now accepts almost everything inside names, i.e. between quotes.
* ILDASM is buggy in that it writes 16-bit unicode characters even if passed the /UTF8 option. Therefore, ILDASMDC now tries to read a file first with Encoding.UTF8, but then also with Encoding.Unicode if the former fails.
2007-11-24 15:00:18 UTC by hmmueller
-
Version 1.00 is here - survives VERY HUGE projects!
Instead of reading all dependencies up-front (which kills memory in our project), there's now a pipeline in place so that only the dependencies of one file are in memory. This requires double reading if graphing is done, but it is now possible to read arbitrarily large projects (all of .Net, for example ;-) ) and is still faster, as memory comsumption is lower.
2007-04-15 11:31:04 UTC by hmmueller
-
Version 0.97 released - wildcards on command-line of EXE
Version 0.97 is only a tiny upgrade - it allows wildcards on the command line of ildasmdc's exe. We use this in an MSBuild script - an MSBuild task is still missing.
2006-09-06 20:56:49 UTC by hmmueller
-
V.0.96 released - HUGE performance boost
Version 0.96 corrects a syntactical bug in the BAT file.
More important, it delivers a huge performance boost by about a factor of 100: Now, 600000 dependencies (resulting from about 300000 LOC) are checked in about 90 secs against about 60 rules, which result in about 950 regular expressions.
This makes it finally possible to use ILDASMDC in continuous integration builds it large-scale projects.
2006-08-29 22:18:22 UTC by hmmueller
-
Version 0.94 released - website + sources + binaries
The following changes have been made:
# Added ---? operator for questionable dependencies. This helps in large projects to distinguish wanted from "just accepted" dependency rules.
# I tried to make it faster with specialized rules - did not seem to work. I'll have to work on the performance more.
# Repaired a parsing bug for explicit interface implementations.
# ILDASMDC now requires UTF8 input; ildasmdc.bat therefore provides UTF8 IL files.
2006-08-27 21:46:48 UTC by hmmueller