Files | Admin

Notes:

Release Name: 0.9.1

Notes:
The IronRuby team is pleased to announce version 0.9.1! As
IronRuby approaches 1.0, these 0.9.x releases contain 
important bug fixes and enhancements that IronRuby users 
request; this release fixes 30 bugs, including fixes for 
running Cucumber and Rails, and significant performance 
improvements on constant lookup. For more information see 
the "Bugs fixed" section, and the CHANGELOG.

This release also contains a significant improvement to 
running IronRuby in the browser with Silverlight: placing 
Ruby code in HTML script tags. For more information, read
this write-up: 
http://jimmy.schementi.com/silverlight/sl-back-to-just-text.pdf.

As always, if you encounter any issues with IronRuby please 
report it here: 
http://ironruby.codeplex.com/WorkItem/Create.aspx.

== Bugs fixed

1. ClrString#[]: 
   http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1927
2. System::Char#inspect is the same format as System::String#inspect: 
   http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2190
3. ir.exe throws StackOverflowException on non-ENU platforms when looking for resource strings: 
   http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2533
4. .NET property named Class hides Ruby method #class:
   http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2027
5. iirb does not handle pasted code correctly (undefined method `ind'): 
   http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2476
6. Can't properly compare very large bignum with infinity: 
   http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2045
7. Command line arguments to igem not being interpreted correctly: 
   http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1585
8. Parallel assignment should call to_ary:
   http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1535
9. Line number in callstack is sometimes 16707566 (0xFEEFEE): 
   http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1995
10. IronRuby and Cucumber - undefined method 'bin_path' for Gem:Module (NoMethodError):
    http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1095
11. Perf regression in TFS Changeset#1093989:
    http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2116
12. Cucumber fails with "wrong number of arguments (1 for 0) (ArgumentError)"
    http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2008
13. StackOverflowException when writing to stdout if Object#to_s has been unset:
    http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=643
14. Cannot call new on subtypes of builtin classes whose "new" method has optional arguments
    http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1085
15. Subclass of StringIO doesn't use StringIO's constructor
    http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1920
16. tracking: Open3 stdlib 
    http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1485
17. Wrong error message when the .NET framework is missing
    http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1900
18. Builtin library methods that raise an exception should call (potentially) monkey-patched new method of Error class:
    http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=765
19. RangeError when regex match with multibyte string:
    http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1895
20. KCode is not used in regex match result.
    http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1898
21. String#each_byte throws System.Text.EncoderFallbackException
    http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1000
22. Corner case in exception handling
    http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1554
23. Perf Degrades
    http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1390
24. Disable CLR operator mapping for built-ins
    http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1679
25. For builtin types, Ruby methods should get precedence over CLR methods
    http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1082
26. ERROR: While executing gem ... bignum too big to convert into 'long'
    http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1851
27. Abstract event not implemented correctly
    http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1628
28. Events implemented on interfaces or abstract events
    http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1852
29. System::MissingMemberException when evaluating IDMOP in ir.exe REPL
    http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1785
30. CLR Structs cannot be initiated
    http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1788

== Contributors
Shri Borde, Timothy Chen, Jim Deville, Tomas Matousek, Kevin Radcliffe, Jimmy Schementi



Changes: Here are all the commits for this release: http://github.com/ironruby/ironruby/commits/v0.9.1 Up until the first commit after the last release: http://github.com/ironruby/ironruby/commit/31a2ba0919ac6d95e3bc0213dcb5bd6b5eef42eb The following commit messages are for all the commits in GIT which are marked as "sync to tfs" or something to that effect: ------------------------------------------------------------------------------- User: jdeville Date: Monday, September 28, 2009 10:34:44 AM makes rake compile's flags match up with msbuild ------------------------------------------------------------------------------- User: tomat Date: Monday, September 28, 2009 9:49:23 AM Fix in initializer generator. ------------------------------------------------------------------------------- User: merllab Date: Friday, September 25, 2009 7:29:36 PM (tomat) Uses System.Numerics.BigInteger as an underlying representation for BigInteger on CLR4. Adds a reference to System.Numerics to projects. Replaces Monitor.Enter(obj) with Monitor.Entery(obj, ref lockTaken). Adds MonitorUtils to reduce amount if #if def’s. Removes CompilerHelpers.IsAttributeDefined – a workaround for CLR bug #772820 which is already fixed in Main. Fixes IronPython\Test\run.py to correctly handle paths with spaces. Fixes Ruby library initializer generator to use short names for Action delegates. Changes Ruby\Libs\rbconfig.rb to use ROWAN_BIN environment variable if available. ------------------------------------------------------------------------------- User: jdeville Date: Friday, September 25, 2009 4:18:43 PM missed this file in the rake work ------------------------------------------------------------------------------- User: merllab Date: Friday, September 25, 2009 3:18:01 PM (jdeville) Shri: Disable a failing ActiveRecord test Adds ActiveRecord tests in Merlin/External.LCA_RESTRICTED/Languages/IronRuby/RailsTests-2.3.3/activerecord Merlin/Main/Languages/Ruby/Test/Scripts/ActiveRecordTests.rb has a driver file to run the tests. It is not yet enabled in irtests Separated/baselined test failures caused by MRI Add ActiveSupport tests to irtests.rb Merge branch 'master' of http://github.com/ironruby/ironruby Added ActionPack tests to irtest.rb. The tests which test the ActiveRecord integration are not enabled. Deleted test-unit gem. This interferes with the test/unit standard library. Normally, require will prefer to load the standard library, even with RubyGems loaded. However, ActiveSupport seems to prefer a gem over a standard library. Reapplying fix for assert in OverloadResolver.cs Run Tutorial SL tests on a separate thread Tim: Modified the source code of Prime.cs to adhere to standards. And also refactor the path methods and example. Added two files for IronRuby tutorial - Loading assemblies by given path Added loading assembly with a given path tutorial. The custom assembly and source code used in the tutorial. Jimmy: Introduction of just text features - Beginnings of "XAP-less" Silverlight application support: http://github.com/jschementi/ironruby/commit/7258169605613e4526b5273e609d0b416ee60119 - Basic script tag support: http://github.com/jschementi/ironruby/commit/c1086d9f37ba257a481e94780b1e4b940cb27dd4 - dlr.js - combination of Silverlight.js and support for DLR-specific options and adding a Silverlight control to the page automatically: http://github.com/jschementi/ironruby/commit/f5ddf2c80e76c2b3e766e17470d2b69348cd2361 - language.config: http://github.com/jschementi/ironruby/commit/b7eccbd5a0d0e1688ce63f13d527e0370a34d962 - Remove localApplicationRoot setting from Chiron, and downloadScripts setting from Microsoft.Scripting.Silverlight: http://github.com/jschementi/ironruby/commit/2770a2ad5b11c37d5efcc0a55b1f3c45fe3c3a08 - Download languages as they are used: http://github.com/jschementi/ironruby/commit/30a55a53936c8064a720b22499b0175c1527e687 - Inline and external script-tags are now enabled for any DLR language: http://github.com/jschementi/ironruby/commit/e144cc67622a4ef930938cec6f75730c4b7dec1b - Remove margins from script-tags inline source, so white-space-sensitive languages like Python work as expected: http://github.com/jschementi/ironruby/commit/4ac55b46a9e4fd074b3fc3a888ef787395df5e14 - XAML script tag support and gestalt samples porting: http://github.com/jschementi/ironruby/commit/42a252f1fdf6486a46161dddf3b86299a6a4dbc8 - Cleans up Tutorial by using new script-tag support, and enables desktop and Silverlight Tutorial tests to run with Tutorial/test.bat: http://github.com/jschementi/ironruby/commit/5467c428555888e3981e2a83126aa5d51196b907 - Fixes for Microsoft.Scripting.dll and Microsoft.Dynamic.dll shuffle: http://github.com/jschementi/ironruby/commit/a7dffdbdcee1a616eba71b6d5fd732adc1ed7c11 Jim: Various .netinterop specs for overloads and binding Other: Adds a git-to-tfs.ps1 which performs a pull, walks the pull doing the appropriate TF operations to each file, and then stores the commit messages from the pull in a txt file. Also adds a update-version.ps1 file that updates the version number for IronRuby updates alias files * Jim and Jimmy's commit messages were cut short due TFS ------------------------------------------------------------------------------- User: merllab Date: Thursday, September 24, 2009 4:04:44 PM Comment: (tomat) Implements constant access caching. We use a single per-runtime constant access version (CAV) which increases each time any constant is assigned, module is included into another module/class or any other operation that can potentially change value returned from any constant read site. Each constant read site holds on a cache object that holds on the last value that the constant resolved to and the snapshot of the CAV for which the value is valid. We collapse chained constant accesses (A::B::C…) into a single site if possible. If any constant in the chain is missing (const_missing is invoked) or the result is not cached. To not leak significant amount of memory we need to hold on the constant values via weak references. Since there are usually much more constant reads than constant writes we create a weak reference on write, store it constant table and reuse it in all read sites. We avoid creating weak references for boxed primitive numeric types and Boolean to make access to these constants faster and to reduce the amount of weak references created. To ensure cross-runtime safety and keep the implementation simple we don’t cache constant chains whose elements are from different runtimes (e.g. A::B::C, where module A is from runtime 1 and module A::B from runtime 2). Also implements optimization of defined?(constant) construct. MRI returns a fresh instance of string “constant” each time defined?(constant) executes with success and nil if it fails to resolve the constant. In most cases the result of defined? is used in a Boolean expression thus immediately converted to Boolean. Since we can statically determine whether a value is being read in a context of a Boolean expression we don’t need to allocate the string if it is. ------------------------------------------------------------------------------- User: merllab Date: Wednesday, September 23, 2009 1:09:45 PM Comment: (tomat) Prevents a possible recursion caused by user code executed when processing AssemblyResolve event. Fixes http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2533. ------------------------------------------------------------------------------- User: merllab Date: Tuesday, September 22, 2009 6:56:30 PM Comment: (tomat) Fixes Dev10 solutions and properly quotes command lines in alias.txt. (Shelveset: SimpleDev10;REDMOND\tomat | SNAP CheckinId: 9462) ------------------------------------------------------------------------------- User: merllab Date: Tuesday, September 22, 2009 3:20:28 PM (tomat) Affects DLR and Ruby. Fixes bugs: http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2476 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2045 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2027 DLR: Renames Set<T> to HashSet<T> and makes it public (so that we can use it in IronRuby). Implements workaround for a bug in 32bit console. v10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/ModuleOps.cs ------------------------------------------------------------------------------- User: merllab Date: Thursday, September 17, 2009 2:43:17 PM (dinov) fix dev10 build issues (Shelveset: Dev10Build;REDMOND\dinov | SNAP CheckinId: 9442) ------------------------------------------------------------------------------- User: jdeville Date: Thursday, September 17, 2009 1:26:02 PM Fixing rake compile ------------------------------------------------------------------------------- User: tomat Date: Thursday, September 17, 2009 10:43:38 AM Fixes Ruby.sln ------------------------------------------------------------------------------- User: merllab Date: Thursday, September 17, 2009 9:49:39 AM (dinov) directory shuffle - final (Shelveset: DirectoryShuffle_Final2;REDMOND\dinov | SNAP CheckinId: 9437) ------------------------------------------------------------------------------- User: merllab Date: Wednesday, September 16, 2009 11:28:46 AM (dinov) directory shuffle (Shelveset: DirectoryShuffle_Phase1_2;REDMOND\dinov | SNAP CheckinId: 9432) ------------------------------------------------------------------------------- User: tomat Date: Tuesday, September 15, 2009 2:39:20 PM Fixing Ruby.sln. ------------------------------------------------------------------------------- User: merllab Date: Monday, September 14, 2009 7:37:37 PM (dinov) move hosting APIs (Shelveset: MoveHapi12;REDMOND\dinov | SNAP CheckinId: m10224) ------------------------------------------------------------------------------- User: merllab Date: Monday, September 14, 2009 6:17:45 PM (tomat) Fixes bugs http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1535: Parallel assignment should call to_ary http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1995: Line number in callstack is sometimes 16707566 (0xFEEFEE) and language specs: fails:Calling a method fails with both lambda and block argument fails:The 'case'-construct raises a SyntaxError when 'else' is used when no 'when' is given ------------------------------------------------------------------------------- User: merllab Date: Friday, September 11, 2009 4:39:08 PM (tomat) Affects Core DLR, DLR, Debugging, ET tests, Python, Ruby, Simple. Moves Func and Action delegates into Microsoft.Scripting.Utils namespace for CLR2 build. Non-trivial changes: Ruby LibraryDef.cs – initializer generator needs to not use full names of Func and Action in generated code. ClrTests.cs – avoid using full names for Func and Action DLR ReflectionUtils – support for custom naming in name formatters (used by Ruby) Simple test.sympl, test.bsl – print short name of Func delegate ------------------------------------------------------------------------------- User: merllab Date: Friday, September 11, 2009 12:55:05 PM Comment: (tomat) Changes constant publishing and lookup in global DLR scope. Previously Object class didn’t have a constant table. Object constants were stored directly in the global scope. This allowed to publish any value to the host and other languages just by defining a constant on Object. Object constants include all constants defined by top-level code as well as built-in constants (VERSION, TRUE, FALSE, NIL, etc.) and modules (Object, String, Time, …). This makes it highly probable that some of these constants collide with similar constants of other languages hosted in the same script runtime. This shelveset implements a different approach. It adds a constant table to Object class that contains all constants that MRI defines on Object. To enable interop scenarios, in which e.g. IronPython loads Ruby library and looks up loaded top-level modules in the global scope, we publish those constants defined on Object whose value is a Module or Class instance. Built-in modules/classes are not published by default. The global scope is therefore initially empty (if not populated by the host or other language) and references to the top-level modules and classes are stored there as Ruby scripts execute. A definition of a module or a class on Object publishes the module/class to the global scope. Also, an assignment expression of a module/class instance to a constant on Object publishes that module/class to the global scope. In both cases the constant reference is stored in both Object constant table and in the global scope storage. To enable the reverse interop scenario, i.e. consuming values published in the global scope by the host or another language, the default implementation of Module#constant_missing doesn’t just throw an exception. Instead, it looks first into a table of loaded CLR namespaces (for symbols like System, Microsoft, etc.) and then into the global scope. Only if the constant is not found there an exception is thrown. The lookup in the global scope uses reverse name mangling. ... ------------------------------------------------------------------------------- User: merllab Date: Friday, September 04, 2009 6:07:25 PM (tomat) Changes namespace where ETs are defined (System.Linq.Expressions) to Microsoft.Scripting.Ast for non-Dev10 build. Mostly #if-def like #if CLR4 using System.Linq.Expressions; #else using Microsoft.Scripting.Ast; #endif or #if MICROSOFT_SCRIPTING_CORE namespace Microsoft.Scripting.Ast { #else namespace System.Linq.Expressions { #endif Some files needed special treatment: - ETScenariosCSLinq Rebuilt with M.S.Ast namespaces. Some tests are using inline LINQ expressions (implicit conversion from anonymous method to Expression<T>), which don't work if Expression<T> is not in System.Linq.Expressions namespace. I've #if-def'd these tests out. Changed references to assemblies to project references in .csproj file so that "msbuild ETScenariosCSLinq.csproj" works. - DlrCore.rsp and *proj files Defines CLR4 constant for Dev10 build where missing. - Python version of Sympl, test_cliclass.py Fixed imports. Deletes Main\Languages\CSharp. ------------------------------------------------------------------------------- User: merllab Date: Friday, September 04, 2009 3:35:01 PM (dinov) Makes Scope objects backed by IDynamicMetaObjectProvider objects instead of an IAttributesCollection. Adds a wrapper object for backwards compatibility w/ existing IAttributesCollections. Scope now implements IDMOP so that you can do gets/sets/deletes against it. It forwards these calls directly through to the storage object which is backing it and does an instance restriction on its self. Adds new ScopeStorage class which is the default expando object used for storage of scopes. Scope storage supports both case sensitive and case insensitive attribute lookups. This exposes an API which allows consumers to cache results against an individual scope (again in either a case sensitive or insensitive way). Languages can hold onto these objects so that they can quickly access the value (just a field load) in a cached manner. This is also a publicly exposed API so that languages can create pre-compiled rules against it and don’t need to do code gen for every single member that is accessed. IronRuby and IronPython are updated to have direct access to scope objects if their storage is a ScopeStorage object. ------------------------------------------------------------------------------- User: merllab Date: Friday, September 04, 2009 12:51:22 PM (dinov) Removes SymbolIds from the IronPython ASTs and compiler Improves repeated import performance (cuts time in half for importing something already imported): adds caching at the module level for __name__, __package__, __path__, at the built-in module level for __import__. Removes thread statics which are used before/after entering importing, moves this logic into module execution instead constant string arrays in to-disk code are now created only once (SymbolId arrays were always re-created so this will be a perf improvement for pre-compiled code) adds "msir" alias for measuring IronRuby runtimes (similar to msip and mscp which is already present) ------------------------------------------------------------------------------- User: jdeville Date: Wednesday, September 02, 2009 8:47:33 AM Fixes irtests to make silverlight builds work on x64 ------------------------------------------------------------------------------- User: merllab Date: Tuesday, September 01, 2009 11:39:16 AM (dinov) Fixes issues that block moving the hosting APIs into their own DLL: Savable ScriptCode support moves into a specialized subclass ActionBinder property is removed from LanguageContext CreateDelegate/GetDelegate moves off of LanguageContext into new DynamicDelegateCreator class Protected internal APIs are made public This actually isn’t a problem for moving the hosting APIs but is actually broken – all functionality the user-facing APIs use should be public. Removed some dead code Removed dependencies on AstUtils preferring to use the normal Expression APIs instead Removed dependency on Unitinialized.Instance Removed string versions of Operation APIs ------------------------------------------------------------------------------- User: merllab Date: Tuesday, September 01, 2009 10:28:07 AM (tomat) Fixes bug in GeneratorRewriter: - array[index] = { yield return expr1; expr2 } wasn’t handled correctly. Fixes bugs in interpreter: - Void lambda whose last body expression is non-void didn’t pop the last value from the stack. - Loops were not balancing stack correctly. Refactors GeneratorRewriter to avoid code duplication and also reduces the number of local variables needed for spilling. Constant expressions can be evaluated out of order and thus don’t need to be spilled. ------------------------------------------------------------------------------- User: merllab Date: Saturday, August 29, 2009 2:14:01 PM (dinov) Cleans up the Scope APIs and moves IronPython off of using DLR-based scopes for locals and modules. Introduces a new ModuleContext which represents the top-level context for IronPython code. CodeContext now holds onto a ModuleContext and a PythonDictionary of locals. When it’s the global CodeContext the locals dictionary is the same as the ModuleContext’s dictionary. PythonModule is a new IDO which just enables dotting through module properties – it’s basically everything that used to live on ScopeOps + the IDO implementation. In the future we can probably improve this and start doing cached module lookups. The old PythonModule is now renamed PythonScopeExtension. This does not yet move off of IAttributesCollection – I’ll do that as the next step. ------------------------------------------------------------------------------- User: merllab Date: Friday, August 28, 2009 5:53:58 PM (jdeville) Shri: Added Silverlight build to irtests.bat Made irtests.bat check that "git config core.autocrlf" is true Got Tutotrial sample tests running in the Silverlight version Changes some tutorial content to be Silverlight-friendly Disables some content that does not have an easy Silverlight equivalent. Fix Tutorial sample to do formatting of text on Silverlight Changed debug=false for Tutorial sample Fix to irtests.rb to make the tutorial sample tests work from any directory Jimmy: IronRuby.Rack - Rails compatibility Tutorial improvements Make DynamicEngine.CreateRuntimeSetup() better support other DLR-hosts in Silverlight. Script for rewriting project files so they build in Visual C# Express Fixes for Moonlight (http://monoport.com/39313 and http://monoport.com/39314) Run the newer Silverlight tests with with "run.rb"; uses Watir to drive the browser. Fixes a couple exceptions that the error formatter can raise if the entry-point doesn't exist (using the error formatter from a custom host). Updates Silverlight version in the build aliases. Remove redefining constant warning in Tutorial. Kevin: Re-adding my change for win32ole_spec to not be folder name dependant. This spec could fail on systems where the "System32" directory was names "system32" Because include? is case-sensitive. Provides a shell as a placeholder for the eventual implementation of OpenSSL::SSL::SSLContext. This gives better compatibility for some HTTP client gems like: httparty and rest-client. This should also add some benefit for the standard net/https library There are also some very basic specs included to flesh out what is needed for SSLContext. Cleaned up OpenSSL::SSL specs a bit, and added a couple of specs for net/https There is more, but TFS won't let me add it. ------------------------------------------------------------------------------- User: merllab Date: Thursday, August 27, 2009 6:30:43 PM (tomat) (FxCopFixes3) Fixes violations of FxCop rules ------------------------------------------------------------------------------- User: merllab Date: Thursday, August 27, 2009 2:19:13 PM (tomat) (V4Config6) Adds configurations for Dev10 builds (V4 Debug and V4 Release) (Shelveset: V4Config6;REDMOND\tomat | SNAP CheckinId: 9273) ------------------------------------------------------------------------------- User: merllab Date: Wednesday, August 26, 2009 3:37:55 PM (tomat) DLR, IronPython changes: Makes BigInteger to double conversion explicit. Removes unused "Signed" build configs from IronPython.sln Ruby changes: Fixes Array#pack and String#unpack specs. ------------------------------------------------------------------------------- User: merllab Date: Tuesday, August 25, 2009 7:00:48 PM (dinov) Merges the System.Dynamic COM interop implementation back into Microsoft.Scripting. This updates the code that was previously duplicated between the two to now be the same. There is only one change to the COM support which is to remove the IDynamicMetaObjectProvider implementation from DispCallable. Instead the COM binder now handles this natively. This allows languages to know when they are calling out to COM and perform extra conversions for the COM call. IronPython uses this to translate buffer objects into byte arrays. The previous solution would work so long as there was no one else calling a disp callable. But once someone else called a disp callable we would generate a rule which would take the normal arguments – not the translated arguments. This rule would get cached and we’d do a re-bind w/o doing the translation. The rebind would go directly to DispCallable’s IDynamicMetaObjectProvider and we wouldn’t have a chance to intercept the call. The COM generation script is updated to generate all of the code twice – once for System.Dynamic and once for Microsoft.Scripting. This moves both IronPython and IronRuby off of Microsoft.Dynamic. This reduces the number of DLLs that need to be loaded. Ultimately Microsoft.Dynamic should go away completely but Sympl still depends upon it. Because Sympl doesn’t depend on the outer layer in general I choose to leave it alone. Microsoft.Dynamic is removed from the IronPython MSI. ------------------------------------------------------------------------------- User: merllab Date: Tuesday, August 25, 2009 1:04:48 PM Comment: (jdeville) Fixes rake compile (Shelveset: fixrakecompile;REDMOND\jdeville | SNAP CheckinId: 9244) ------------------------------------------------------------------------------- User: merllab Date: Tuesday, August 25, 2009 1:42:03 AM (jdeville) *updates rubyspec installation *Fixes File.open(name, "a") so that it appends instead of overwrites. *makes require 'resolv' work for the specs to allow them to be tagged instead of guarded. This will make it easier to implement the Resolv library down the road. ------------------------------------------------------------------------------- User: merllab Date: Tuesday, August 25, 2009 12:58:47 AM (tomat) Fixes bug in instance_eval. Adds checks to Struct.new and attr_accessor that raise NameError if an attribute name is not a valid attribute name. Implements Kernel#display. Fixes visibility of some methods on Kernel. Implements Kernel#instance_exec and Module#module_exec. Regroups methods in KernelOps.cs and ModuleOps.cs to move related methods closer together. ------------------------------------------------------------------------------- User: merllab Date: Monday, August 24, 2009 5:40:46 PM (tomat) Fixes nil blocks handling. ------------------------------------------------------------------------------- User: merllab Date: Sunday, August 23, 2009 11:17:35 PM Comment: (jdeville) Updates Ruby to patchlevel 368 Removes Ruby patchlevel 287 Updates Rubygems tests to 1.3.5 ------------------------------------------------------------------------------- User: merllab Date: Saturday, August 22, 2009 10:19:14 AM (tomat) Fixes 2 bugs revealed by running Cucumber: - Blocks with a single parameter created by library enumerators should have a HasSingleCompoundParameter flag set so they can accept multiple arguments and unsplat them into a single argument w/o reporting a warning. - A list of dependent modules was pruned incorrectly in RubyModule, which caused incorrect cache invalidation. ------------------------------------------------------------------------------- User: merllab Date: Thursday, August 20, 2009 3:24:30 PM (dinov) More fixes for Dev10 builds: Our *.Build.csproj files have some extra warning suppression for warnings that don’t exist We refer to math resources which Tomas recently removed EngineTest needs some object casts to build w/ C# 4.0 – already fixed in vs_langs01, this is pulling the fix into vs_langs01_s Renaming SYSTEM_CORE -> CLR4 missed some spots this was being used in Ruby ------------------------------------------------------------------------------- User: merllab Date: Wednesday, August 19, 2009 5:09:18 PM (jdeville) Shri: Fix for Kernel#enum_for which was affecting Cucumber Adds version checks to RakeTests.rb and RubyGemsTests.rb to catch configuration issues quickly Allow ir.exe -r<somelib> without space after the -r. Similarly for -e File.truncate and File#truncate Improves File::Stat. sysread/syswrite should track read and write buffering separtely Implements IO.pipe Implements Open3#popen3 (which does not work on MRI 1.8, but does work on MRI 1.9). The "session" gem now gets further along after setting %SESSION_USE_OPEN3%, but it still does not work Factors out code for printing warning into IoOps.ReportWarning Implements IO#write_nonblock to throw an exception since it is not supported by MRI on Windows. Implements IO#sysread, syswrite and sysseek, which call Flush. Ideally, we would create new Streams using FileOptions.WriteThrough. Tweaks the "complain" RubySpec helper to include actual stderr Makes irtests.rb use the full path for mspec.bat Changes com_helper.rb to include check for Office 10 Adds basic test for "ir.exe -profile" Adds a script tags_stats.rb to measure number of RubySpec tags Fixes a bunch of issues preventing irtests.bat from running cleanly on some machines: Fix for regex bug - http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1895 Added a splash screen to the tutorial Merge branch 'master' of http://github.com/ironruby/ironruby BasicSocket#recv should mark the thread as sleeping Adds support for ir.exe -Ifoo;bar. Previously, we were not breaking it up into two paths. The stricter tests in upper_dash_i_spec.rb caught two other issues: Fixed assert in OverloadResolver.cs Adds tests for the tutorial sample to irtests.rb Add test-spec Jimmy SP1 check should show the correct language name. Ryan Changed the :LibraryPaths in context.rb to point to redist_libs from Ruby-1.8.6p287 Also includes changes from Jirapong that TFS wouldn't let me document. ------------------------------------------------------------------------------- User: merllab Date: Wednesday, August 19, 2009 1:55:26 PM (dinov) fix dev10 build ------------------------------------------------------------------------------- User: merllab Date: Thursday, August 13, 2009 12:46:11 PM (tomat) Fixes bug http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=643 ------------------------------------------------------------------------------- User: merllab Date: Wednesday, August 12, 2009 11:23:34 PM (tomat) Fixes core/io, core/file, and library/stringio spec failuires. Includes Shri’s pipe implementation. File descriptors on RubyContext need to be shared for duplicated IO objects and reference counted so that close called for fd closes it only if there is no other open shared duplicated fd. Factors RubyBufferedStream out of RubyIO. The stream can buffer up to 4 bytes and the buffer can be modified (needed for ungetc). Also fixes various buffering bugs. Merges IOMode and RubyFileMode. Makes implementation of Array#flatten non-recursive, more efficient and reusable (used in Kernel#print). Fixes specs: - Text files used by specs ought to use Unix end of lines (\n) - Some specs were failing in MRI 1.8.6 and/or MRI 1.9 on Windows. Some of them were obviously wrong so I’ve fixed them or deleted them. Some might work on Unix so I’ve made them conditional. Could somebody go thru the specs that are conditional on Windows or failing in 1.8.6 or 1.9, test them on Linux/MacOS and file bugs on MRI so that it’s clear if the differences are intentional or not. I’ve filed few bugs already where the behavior is obviously wrong. - Also many StringIO specs test for a different behavior than corresponding IO/File specs. Since StringIO is supposed to be used as a mock for IO I would consider all those differences bugs. But there are dozens of them so I’m not sure about that. ------------------------------------------------------------------------------- User: vsllab1 Date: Tuesday, August 11, 2009 4:54:11 PM (tomat) Removes MathResources.resx. ------------------------------------------------------------------------------- User: merllab Date: Monday, August 10, 2009 6:39:28 PM (jdeville) Makes convert-alias.rb convert AliasInternal.txt in addition to Alias.txt. Also adds AliasInternal.ps1 to dev.ps1 (via the merlin module) Also fixes dev.ps1 ------------------------------------------------------------------------------- User: merllab Date: Wednesday, August 05, 2009 7:35:31 PM (tomat) Implements default protocols for all primitive numeric types and BigInteger. Implements interop conversions. ------------------------------------------------------------------------------- User: merllab Date: Wednesday, August 05, 2009 2:24:07 PM (tomat) Fixes bug: http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=765 When we throw an exception from a library method we don’t create the instance of the exception dynamically (calling new method on its class). Some applications define their own new method and use it to map one exception type to a different one by returning an instance of different exception. One option how to fix this would be to find all places in libraries where an exception is thrown or a .NET method is called that can throw an exception that maps to Ruby exception, flow RubyContext in that code and create the exception object dynamically. This would be error prone and would make the code less readable. Also if a .NET API is called directly we wouldn’t have control over the exceptions that are thrown. Instead we keep the exception construction static and let the exception propagate until the first rescue clause handles it. We then call new on the exception class if it is overridden by user defined method and set the current exception $! to the one returned by new. We also mark this exception as “handled” so that we don’t call new in the next rescue in the case the exception is rethrown. We also mark “handled” any exception object that is dynamically constructed by Class#new. Such exceptions shouldn’t be re-created. The shelveset also cleans up some related code. ------------------------------------------------------------------------------- User: merllab Date: Wednesday, August 05, 2009 1:51:00 PM (jdeville) Makes the com interop specs skip word and excel specific tests if word/excel is not installed ------------------------------------------------------------------------------- User: merllab Date: Tuesday, August 04, 2009 5:14:50 PM Comment: (tomat) Disables operator mapping for built-ins. Fixes bugs: http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1679 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1082 -------------------------------------------------------------------------------