CHANGELOG ========= ironruby-0.9.5 (RC3) 2010-03-12 ------------------------------- Here are all the commits for this release: http://github.com/ironruby/ironruby/commits/v1.0-rc3 Up until the first commit after the last release: http://github.com/ironruby/ironruby/commit/51920c25aaf2a24e82055e0807f51a19a01d3a40 The following commit messages are for all the commits in GIT which are marked as "sync to tfs" or something to that effect: ----------------------------------------------------------------------------------------------------------------------- Changeset: 1675820 User: jdeville Date: Friday, March 12, 2010 10:02:43 AM Comment: doh, minor fixes needed. Items: edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/rakelib/package.rake Check-in Notes: Code Reviewer: Performance Reviewer: Security Reviewer: ----------------------------------------------------------------------------------------------------------------------- Changeset: 1675808 User: jdeville Date: Friday, March 12, 2010 9:50:52 AM Comment: Readme changes and tweaks to rake package. Going in directly since there are no test dependencies. Items: delete $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Licenses;X13115842 delete $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Licenses/CHANGELOG.txt;X13115842 delete $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Licenses/LICENSE.CPL.txt;X13115842 delete $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Licenses/LICENSE.MSPL.html;X13115842 delete $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Licenses/LICENSE.Ruby.txt;X13115842 delete $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Licenses/README.txt;X13115842 branch $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public branch $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/CHANGELOG.txt branch $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/LICENSE.CPL.txt branch $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/LICENSE.MSPL.html branch $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/LICENSE.Ruby.txt branch $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/README.txt add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/README.txt add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/clock add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/clock/python add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/clock/python/app add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/clock/python/app/app.py add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/clock/python/app/app.xaml add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/clock/python/index.html add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/clock/ruby add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/clock/ruby/app add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/clock/ruby/app/app.rb add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/clock/ruby/app/app.xaml add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/clock/ruby/app/Silverlight.rb add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/clock/ruby/index.html add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/photoviewer add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/photoviewer/images add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/photoviewer/images/loading.gif add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/photoviewer/index.html add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/photoviewer/lightbox add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/photoviewer/lightbox/css add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/photoviewer/lightbox/css/lightbox.css add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/photoviewer/lightbox/images add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/photoviewer/lightbox/images/blank.gif add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/photoviewer/lightbox/images/close.gif add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/photoviewer/lightbox/images/closelabel.gif add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/photoviewer/lightbox/images/loading.gif add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/photoviewer/lightbox/images/next.gif add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/photoviewer/lightbox/images/nextlabel.gif add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/photoviewer/lightbox/images/prev.gif add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/photoviewer/lightbox/images/prevlabel.gif add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/photoviewer/lightbox/js add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/photoviewer/lightbox/js/effects.js add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/photoviewer/lightbox/js/lightbox.js add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/photoviewer/lightbox/js/prototype.js add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/photoviewer/lightbox/js/scriptaculous.js add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/photoviewer/ruby add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/photoviewer/ruby/app.rb add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/photoviewer/ruby/render.rb add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/photoviewer/ruby/silverlight.rb add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/photoviewer/ruby/system-json.rb add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/photoviewer/ruby/System.Json.dll add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/photoviewer/stylesheets add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/photoviewer/stylesheets/screen.css add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/repl add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/repl/python add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/repl/python/console.css add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/repl/python/index.html add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/repl/python/python add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/repl/python/python/app.py add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/repl/ruby add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/repl/ruby/console.css add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/repl/ruby/index.html add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/repl/ruby/ruby add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/samples/repl/ruby/ruby/app.rb add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/script add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/script/chr.bat add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/script/chr add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/script/sl.bat add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/script/sl add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/script/templates add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/script/templates/python add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/script/templates/python/app add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/script/templates/python/app/app.py add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/script/templates/python/app/app.xaml add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/script/templates/python/css add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/script/templates/python/css/screen.css add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/script/templates/python/index.html add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/script/templates/python/js add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/script/templates/python/js/error.js add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/script/templates/ruby add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/script/templates/ruby/app add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/script/templates/ruby/app/app.rb add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/script/templates/ruby/app/app.xaml add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/script/templates/ruby/css add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/script/templates/ruby/css/screen.css add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/script/templates/ruby/index.html add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/script/templates/ruby/js add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Public/silverlight/script/templates/ruby/js/error.js edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/rakelib/package.rake edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Scripts/bin/ir Check-in Notes: Code Reviewer: Performance Reviewer: Security Reviewer: ----------------------------------------------------------------------------------------------------------------------- Changeset: 1675082 User: tomat Checked in by: merllab Date: Thursday, March 11, 2010 6:35:43 PM Comment: Adds filtering of invalid names from the lists that are produced by methods, instance_methods, constants, etc. Fixes Dev.bat. Environment variables are incorrectly expanded on 64 machines. (Shelveset: InvalidNames;REDMOND\tomat | SNAP CheckinId: 10503) Items: edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/RubyTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/ClrTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/ModuleOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Compiler/Parser/Tokenizer.cs Check-in Notes: Code Reviewer: Performance Reviewer: Security Reviewer: ----------------------------------------------------------------------------------------------------------------------- Changeset: 1674642 User: sborde Checked in by: merllab Date: Thursday, March 11, 2010 2:42:21 PM Comment: Change RbConfig::CONFIG["arch"] to "universal-dotnet2.0" (or "universal-dotnet4.0" on .NET 4) Also changed RbConfig::CONFIG["host_os"] to be based on RUBY_PLATFORM so that it will be mswin32 on Windows and linux on Linux. Removed some config values that are not present in JRuby (Shelveset: config;REDMOND\sborde | SNAP CheckinId: 10498) Items: edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libs/rbconfig.rb edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Interop/net/uncategorized_spec.rb Check-in Notes: Code Reviewer: Performance Reviewer: Security Reviewer: ----------------------------------------------------------------------------------------------------------------------- Changeset: 1666067 User: sborde Checked in by: merllab Date: Tuesday, March 09, 2010 11:40:15 AM Comment: When installing gems from a remote server that is using MRI, the gem information that is sent down to the local machine is incorrect since MRI is not able to parse the platform string of "universal-.net" until a patch is applied to RubyGems in Gem::Platform#initialize, similar to the way other platforms are handled in that method. IronRuby does include this patch. For now, we work around the problem in Gem::Specification._load Running word_spec was leaving behind a Word dialog box asking whether to save the Word document or not. Fixed the spec to close Word without prompting. (Shelveset: gems;REDMOND\sborde | SNAP CheckinId: 10482) Items: edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Interop/com/apps/word_spec.rb Check-in Notes: Code Reviewer: Performance Reviewer: Security Reviewer: ----------------------------------------------------------------------------------------------------------------------- Changeset: 1661012 User: tomat Checked in by: merllab Date: Monday, March 08, 2010 7:33:06 PM Comment: Implements character enumerator. Fixes String#split to handle case of empty separator and KCODE set - it should split the string to characters using the current KCODE encoding. (Shelveset: CharEnum4;REDMOND\tomat | SNAP CheckinId: m11346) Items: edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/RubyTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/MutableStringTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/MutableStringOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/RubyTime.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Extensions/ClrStringOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Initializers.Generated.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/CharacterMap.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/MutableString.BinaryContent.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/MutableString.CharArrayContent.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/MutableString.Content.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/MutableString.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/MutableString.KBinaryContent.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/MutableString.StringContent.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyBufferedStream.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Ruby.Build.csproj edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Ruby.csproj edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/BinaryDecoderFallback.cs add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/LosslessDecoderFallback.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyContext.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyExceptions.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/Utils.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Scripts/utr/active_support_3_tests.rb edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Scripts/utr/active_support_tests.rb Check-in Notes: Code Reviewer: Performance Reviewer: Security Reviewer: ----------------------------------------------------------------------------------------------------------------------- Changeset: 1660716 User: jdeville Checked in by: merllab Date: Monday, March 08, 2010 4:13:20 PM Comment: * adds clr_ext library including Array#to_clr_array, Kernel#as, and Ivan's attr_event to Samples * version => 0.9.5.0 Closes: * CP#1594 * CP#3934 * CP#3083 * CP#1840 * CP#3319 * CP#3314 * CP#3450 (Shelveset: bugfixrc3;REDMOND\jdeville | SNAP CheckinId: m11341) Items: edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyContext.cs add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Samples/clr_ext.rb edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Scripts/irtests.rb edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Scripts/powershell/dev.ps1 edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Scripts/powershell/merlin/merlin.psm1 edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Interop/com/apps/comtest_spec.rb edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Interop/dlr/python/python_spec.rb edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Interop/net/A/a.generated.dll edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Interop/net/assembly/access/custom_assembly_spec.rb edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Interop/net/B/b.generated.dll edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Interop/net/class/fixtures/classes.rb edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Interop/net/fixtures.generated.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Interop/net/fixtures.generated.dll edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Interop/net/helpers.rb edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Interop/net/interface/fixtures/classes.rb edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Interop/net/interface/methods_spec.rb edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Interop/net/matchers.rb edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Interop/net/method/binding/generic_spec.rb edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Interop/net/method/fixtures/classes.rb add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Interop/net/ruby/additions/clr_ext add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Interop/net/ruby/additions/clr_ext/as_spec.rb add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Interop/net/ruby/additions/clr_member_spec.rb edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Interop/net/ruby/fixtures/classes.rb add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/legacy add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/legacy/matchers.rb add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/legacy/runtime add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/legacy/runtime/block_spec.rb add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/legacy/runtime/fixtures add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/legacy/runtime/fixtures/blocks.rb add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/legacy/spec_helper.rb edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/run_builtin.rb edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Scripts/utr/active_record_tests.rb Check-in Notes: Code Reviewer: Performance Reviewer: Security Reviewer: ----------------------------------------------------------------------------------------------------------------------- Changeset: 1658814 User: sborde Checked in by: merllab Date: Sunday, March 07, 2010 3:01:48 PM Comment: Add a stub implementation of YAML.add_builtin_type Enables Rails 3 tests that now work after Tomas's fixes for Symbol#to_proc and encoding (Shelveset: r3;REDMOND\sborde | SNAP CheckinId: 10467) Items: edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Scripts/utr/action_pack_3_tests.rb edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Scripts/utr/active_support_3_tests.rb Check-in Notes: Code Reviewer: Performance Reviewer: Security Reviewer: ----------------------------------------------------------------------------------------------------------------------- Changeset: 1658466 User: tomat Checked in by: merllab Date: Saturday, March 06, 2010 9:35:45 AM Comment: Implements Symbol#to_proc (Shelveset: SymToProc;REDMOND\tomat | SNAP CheckinId: 10466) Items: edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/RubyTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/BlockTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/ProcOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/SymbolOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Initializers.Generated.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/Proc.cs Check-in Notes: Code Reviewer: Performance Reviewer: Security Reviewer: ----------------------------------------------------------------------------------------------------------------------- Changeset: 1658344 User: tomat Checked in by: merllab Date: Saturday, March 06, 2010 1:20:12 AM Comment: Fixes bunch of encoding issues including http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=3920. Fixes handling of DST transitions in Time operators. Fixes bug in Array: http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=3314 (Shelveset: Encs2;REDMOND\tomat | SNAP CheckinId: 10465) Items: edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/MutableStringTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/RegexTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/RubyArrayTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/RubyRegexOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/RubyTime.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/StringScanner/StringScanner.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libs/win32ole.rb edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/MatchData.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/MutableString.BinaryContent.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/MutableString.CharArrayContent.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/MutableString.Content.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/MutableString.cs add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/MutableString.KBinaryContent.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/MutableString.StringContent.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyArray.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyEncoding.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyRegex.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyRegexOptions.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Hosting/RubyCommandLine.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Hosting/RubyOptionsParser.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Ruby.Build.csproj edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Ruby.csproj add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/BinaryDecoderFallback.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/KCoding.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/Utils.cs Check-in Notes: Code Reviewer: Performance Reviewer: Security Reviewer: ----------------------------------------------------------------------------------------------------------------------- Changeset: 1651534 User: sborde Checked in by: merllab Date: Thursday, March 04, 2010 2:34:00 PM Comment: Change RbConfig::CONFIG["arch"] to "universal-.net2.0" Changes RubyGems to know about the ".net" OS (Shelveset: config;REDMOND\sborde | SNAP CheckinId: 10454) Items: edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libs/rbconfig.rb edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Interop/net/uncategorized_spec.rb Check-in Notes: Code Reviewer: Performance Reviewer: Security Reviewer: ----------------------------------------------------------------------------------------------------------------------- Changeset: 1643171 User: tomat Checked in by: merllab Date: Thursday, March 04, 2010 10:26:23 AM Comment: DLR: Fixes interop with CLR4 BigInteger (adds implicit conversions from and to our BigInteger). Ruby: Fixes module duplication (initializers and methods were copied incorrectly). Adds co- and contra- variance smoke tests. (Shelveset: MoreFixes;REDMOND\tomat | SNAP CheckinId: 10450) Items: edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/IronRuby.Tests.csproj edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/RubyTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/ClrTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/ModuleTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/RubyUtilsTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyModule.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/Calls/RubyMemberInfo.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/Utils.cs Check-in Notes: Code Reviewer: Performance Reviewer: Security Reviewer: ----------------------------------------------------------------------------------------------------------------------- Changeset: 1613348 User: ddicato Checked in by: merllab Date: Monday, March 01, 2010 11:49:15 PM Comment: Switches underlying implementation of bigint and complex to System.Numerics Also fixes a couple CodePlex bugs: - 25893: in throws wrong exception - 25895: coerce(, ) doesn't throw codeplexcomment (Shelveset: numerics;REDMOND\ddicato | SNAP CheckinId: 10430) Items: edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/IronRuby.Libraries.Build.csproj Check-in Notes: Code Reviewer: Performance Reviewer: Security Reviewer: ----------------------------------------------------------------------------------------------------------------------- Changeset: 1613222 User: tomat Checked in by: merllab Date: Monday, March 01, 2010 9:28:38 PM Comment: Ignores UTF8 BOM in 1.8 mode unless $KCODE is SJIS or EUC. Fixes http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=3913 Fixes -d and --version options. Fixes a bug in StringScanner: scan doesn't copy the original string and [] uses the current value. Makes MutableString.GetSlice out-of-range tolerant (needed by StringScanner#[] fix). Improves performance of repeated Regex.Match called on the same input string. (Shelveset: MiscStrings;REDMOND\tomat | SNAP CheckinId: 10429) Items: edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Parser/ParserTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/BacktraceTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/MutableStringTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/MutableStringOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/RubyTime.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Initializers.Generated.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/StringScanner/StringScanner.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/MatchData.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/MutableString.BinaryContent.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/MutableString.CharArrayContent.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/MutableString.Content.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/MutableString.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/MutableString.StringContent.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyBufferedStream.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyRegex.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Compiler/Errors.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Compiler/Parser/Tokenizer.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Hosting/RubyOptionsParser.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyContext.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyOptions.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyStackTraceBuilder.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/Utils.cs Check-in Notes: Code Reviewer: Performance Reviewer: Security Reviewer: ----------------------------------------------------------------------------------------------------------------------- Changeset: 1610422 User: tomat Checked in by: merllab Date: Sunday, February 28, 2010 12:45:47 AM Comment: Implements implicit conversions to COM types when binding to COM objects. (Shelveset: ComConversions;REDMOND\tomat | SNAP CheckinId: m11282) Items: edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libs/win32ole.rb edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubySymbol.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/Calls/InteropBinder.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Interop/com/apps/excel_spec.rb Check-in Notes: Code Reviewer: Performance Reviewer: Security Reviewer: ----------------------------------------------------------------------------------------------------------------------- Changeset: 1610421 User: tomat Checked in by: merllab Date: Sunday, February 28, 2010 12:44:24 AM Comment: Polishes Ruby Hosting APIs: - Removes Ruby.GetExecutionContext - Changes RequireFile to be an extension method on ScriptEngine. - Adds missing comments. Removes unnecessary frozen flag checks. Adds flags to Hash. (Shelveset: RbHAPI;REDMOND\tomat | SNAP CheckinId: m11282) Items: edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Driver.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/RubyTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/ConstantTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/HostingTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/ArrayOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/HashOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Extensions/IDictionaryOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/Hash.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyArray.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/Subclasses.Generated.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Hosting/RubyCommandLine.cs add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Hosting/RubyService.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Ruby.Build.csproj edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Ruby.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Ruby.csproj edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyContext.cs Check-in Notes: Code Reviewer: Performance Reviewer: Security Reviewer: ----------------------------------------------------------------------------------------------------------------------- Changeset: 1610406 User: tomat Checked in by: merllab Date: Saturday, February 27, 2010 10:16:28 PM Comment: DLR interpreter: Inlines RunInstructions into Run to reduce stack consumption. The interpreter saves interpreted stack trace when it catches an exception. The stack trace is stored in Exception.Data and can be inspected later by code that builds stack traces. Fixes synchronous compilation to run the compiled code immediately. Ruby: Factors stack building logic out of RubyExceptionData into RubyStackTraceBuilder. Adds /sync0, /sync1, /debug and /debug /partial to irtest.rb to cover more cases. Fixes: http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=4010 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1979 (Shelveset: STraces2;REDMOND\tomat | SNAP CheckinId: 10420) Items: edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Driver.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/RubyTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/BacktraceTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Compiler/Ast/BlockDefinition.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Compiler/Ast/Definitions/MethodDefinition.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Compiler/Ast/SourceUnitTree.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Compiler/Generation/Profiler.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Ruby.Build.csproj edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Ruby.csproj edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyExceptionData.cs add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyStackTraceBuilder.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Scripts/irtest.rb Check-in Notes: Code Reviewer: Performance Reviewer: Security Reviewer: ----------------------------------------------------------------------------------------------------------------------- Changeset: 1607854 User: sborde Checked in by: merllab Date: Thursday, February 25, 2010 4:48:25 PM Comment: Adds ActiveSupport 3.0.pre tests. Pass rate is 98%! Conditionally disables some ActiveRecord tests that fail on non-English machines Adds support to run the ActiveRecord tests with a private version of ironruby-dbi for ironruby-dbi development scenarios. (Shelveset: as3;REDMOND\sborde | SNAP CheckinId: 10406) Items: edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Scripts/irtests.rb edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Scripts/utr.rb edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Scripts/utr/active_record_tests.rb add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Scripts/utr/active_support_3_tests.rb edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Scripts/utr/gem_tests.rb Check-in Notes: Code Reviewer: Performance Reviewer: Security Reviewer: ----------------------------------------------------------------------------------------------------------------------- Changeset: 1605253 User: tomat Checked in by: merllab Date: Wednesday, February 24, 2010 11:04:35 AM Comment: DLR: Fixes bugs in type inference: 1) By-ref generic parameter public void Foo(ref T x); Foo(1) Foo(StrongBox()) 2) Multiple generic parameters public IEnumerable Select(IEnumerable source, Func selector); 3) Generic arrays public int Foo(T[] x); 4) Type shape difference public static int f5(Dictionary, Dictionary> arg); C.f5( Dictionary[List[str], Dictionary[int, str]]() ) In general type inference seems to need more test coverage û various type shapes, arrays, ref/out with and w/o strong boxes, params array, params dict, optional, named combinations. IÆve added a few tests for the cases above to Ruby unit tests. Ruby: Implements IInferableInvokable on blocks so that they can be coerced to Func and Action delegates: Enumerable.select([1,2,3], lambda { |x| x + 1 }).each { |a| puts a } Fixes: http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=3934 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=3395 (Shelveset: TypeInferenceBugs2;REDMOND\tomat | SNAP CheckinId: 10393) Items: edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/IronRuby.Tests.csproj edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/RubyTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/ClrTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/Proc.Meta.cs Check-in Notes: Code Reviewer: Performance Reviewer: Security Reviewer: ----------------------------------------------------------------------------------------------------------------------- Changeset: 1602311 User: tomat Checked in by: merllab Date: Monday, February 22, 2010 7:50:54 PM Comment: Fixes failing UDPSocket#bind specs. (Shelveset: UDPFix;REDMOND\tomat | SNAP CheckinId: 10386) Items: edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/socket/BasicSocket.cs Check-in Notes: Code Reviewer: Performance Reviewer: Security Reviewer: ----------------------------------------------------------------------------------------------------------------------- Changeset: 1602122 User: tomat Checked in by: merllab Date: Monday, February 22, 2010 5:16:26 PM Comment: Improves perf of IO#each_line. Fixes a few socket specs. Fixes: http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=3314 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=3231 (Shelveset: Buffer7;REDMOND\tomat | SNAP CheckinId: 10384) Items: edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/RubyTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/IoTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/RubyArrayTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/IoOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/RubyTime.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/StringFormatter.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Extensions/IListOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Initializers.Generated.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/socket/BasicSocket.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/socket/IPSocket.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/socket/Socket.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/socket/TCPServer.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/socket/TCPSocket.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/MutableString.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyArray.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyBufferedStream.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyIO.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/Utils.cs Check-in Notes: Code Reviewer: Performance Reviewer: Security Reviewer: ----------------------------------------------------------------------------------------------------------------------- Changeset: 1599184 User: sborde Checked in by: merllab Date: Friday, February 19, 2010 9:25:13 AM Comment: Ruby 1.8.7 and 1.9 compat - I wanted to get a feel for where were with Rails 3 compat. For V1 RTM, we can have a crisper message like "IronRuby 1.0 supports Rails 2.3.5. Rails 3 tests pass at 98%, and full support will follow after the 1.0 RTM". I started off looking at the -19 mode but gave up on that after I could not get MRI 1.9 to install 1.9 gems (1.9 must include a different version of RubyGems, and I could not use the existing 1.8 gems) 1.8.7 related changes - Adds -187 command line option - Enables ActionPack 3.0.pre tests in irtests - Adds Object#tag - avoids an ArgumentException("Illegal characters in path") that was happenning when a bad file name string was passed in to eval - Adds String#start_with? and String#end_with? - RUBY_VERSION is tied to the command-line argument specified 1.9 related changes - Adds Integer#fdiv - Allows calling convention argument to Win32API.new (Shelveset: r187;REDMOND\sborde | SNAP CheckinId: 10375) Items: edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Parser/ParserTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/BlockTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/MethodTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/StringTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/SuperTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/Dir.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/ModuleOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/MutableStringOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/RubyTime.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/ThreadOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Extensions/ClrBigInteger.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Extensions/ClrInteger.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Initializers.Generated.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Win32API/Win32API.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libs/rbconfig.rb edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Compiler/Parser/Parser.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Compiler/Parser/Tokenizer.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Hosting/RubyOptionsParser.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/RubyCompatibility.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/Globals/SpecialGlobalVariableInfo.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyContext.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyExceptionData.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyOptions.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyUtils.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Scripts/irtests.rb edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Scripts/generate_test-unit_tags.rb edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Scripts/utr.rb add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Scripts/utr/action_pack_3_tests.rb Check-in Notes: Code Reviewer: Performance Reviewer: Security Reviewer: ----------------------------------------------------------------------------------------------------------------------- Changeset: 1597865 User: tomat Checked in by: merllab Date: Thursday, February 18, 2010 1:25:56 PM Comment: tfpt review "/shelveset:V4bugs;REDMOND\tomat" Comment : DLR: Marks generated assemblies by SecurityRulesAttributes. Ruby: Corrects paths in run_syntax and MSpec (ruby_exe.rb). Adds RubyIO subclass to avoid type gen. Fixes tests to run correctly in V4 partial trust (Shelveset: V4Bugs;REDMOND\tomat | SNAP CheckinId: 10373) Items: edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Driver.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Helpers.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Parser/ParserTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/ClrTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/DlrInteropTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/HostingTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/MethodTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyIO.cs add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyIO.Subclass.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyRegex.Subclass.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/Subclasses.Generated.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Compiler/Generation/RubyTypeDispenser.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Ruby.Build.csproj edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Ruby.csproj edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/Loader.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Scripts/utr.bat edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Syntax/run_syntax.rb Check-in Notes: Code Reviewer: Performance Reviewer: Security Reviewer: ----------------------------------------------------------------------------------------------------------------------- Changeset: 1594871 User: tomat Checked in by: merllab Date: Tuesday, February 16, 2010 8:27:33 PM Comment: Replaces all remaining calls to Expession.Dynamic by AstUtils.LightDynamic. Removes superfluous restriction in InteropBinder.InvokeMember.FallbackInvoke. This caused a failure when binding to DynamicObject. Fixes Silverlight and FxCop build settings in Rowan4.sln. Adds YAML to Rowan4.sln (Shelveset: InteropFix;REDMOND\tomat | SNAP CheckinId: 10370) Items: edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/RubyTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/DlrInteropTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Win32API/Win32API.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/Calls/InteropBinder.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/Calls/RubyBinder.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/Calls/RubyScopeMethodMissingInfo.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/Utils.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Scripts/ircoverage.bat Check-in Notes: Code Reviewer: Performance Reviewer: Security Reviewer: ----------------------------------------------------------------------------------------------------------------------- Changeset: 1594104 User: tomat Checked in by: merllab Date: Tuesday, February 16, 2010 10:48:03 AM Comment: DLR, Python: - Adds IInvokeOnGetBinder to Microsoft.System.Core. - Adds Rowan4.sln that includes DLR, IronRuby and IronPython projects. Ruby: - Implements meta-protocol for accessing DLR scopes with fall back to standard method_missing. o Fixes http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2478 - Fixes http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=3083 - Fixes name mangling on COM objects. - Fixes send(:foo=, args) to call indexed property on foreign meta-objects if the number of arguments is > 1. - Implements factories for interop binders that cache them on RubyContext. - Implements non-lexical super call action (a flag on RubyCallAction). (Shelveset: InteropBinding;REDMOND\tomat | SNAP CheckinId: 10368) Items: edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Console/Ruby.ConsoleAny.csproj edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/RubyTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/HostingTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Initializers.Generated.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/IronRuby.Libraries.Build.csproj edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/IronRuby.Libraries.csproj edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Compiler/ReflectionCache.Generated.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Ruby.Build.csproj edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Ruby.csproj edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/Calls/InteropBinder.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/Calls/MetaObjectBuilder.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/Calls/RubyCallAction.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/Calls/RubyCallSignature.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/Calls/RubyMemberInfo.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/Calls/RubyMetaBinder.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/Calls/RubyMetaBinderFactory.cs add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/Calls/RubyScopeMethodMissingInfo.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/Calls/SuperCallAction.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/Conversions/Converter.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/Conversions/ConvertToSAction.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/Conversions/GenericConversionAction.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/Conversions/ProtocolConversionAction.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyContext.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyScope.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyUtils.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Interop/com/apps/comtest_spec.rb edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Interop/com/fixtures.generated.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Interop/com/fixtures.generated.dll edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Interop/com/fixtures/classes.rb Check-in Notes: Code Reviewer: Performance Reviewer: Security Reviewer: ----------------------------------------------------------------------------------------------------------------------- Changeset: 1590922 User: sborde Checked in by: merllab Date: Friday, February 12, 2010 11:14:08 PM Comment: remove_const does not return the old value in some cases This fix brings the ActiveRecord test pass rate to 98%. Only 54 out of 2300 tests are not disabled. (Shelveset: ar;REDMOND\sborde | SNAP CheckinId: 10357) Items: edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyModule.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Scripts/utr.rb edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Scripts/utr/active_record_tests.rb Check-in Notes: Code Reviewer: Performance Reviewer: Security Reviewer: ----------------------------------------------------------------------------------------------------------------------- Changeset: 1590145 User: sborde Checked in by: merllab Date: Friday, February 12, 2010 10:18:34 AM Comment: Adds OpenSSL::SSL::SSLError which fixes all the remaining active_resource failures Adds an overload of NoMethodError.new that takes 3 arguments Implements Zlib.crc32 (Shelveset: rails;REDMOND\sborde | SNAP CheckinId: 10342) Items: edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/Exceptions.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Zlib/zlib.cs Check-in Notes: Code Reviewer: Performance Reviewer: Security Reviewer: ----------------------------------------------------------------------------------------------------------------------- Changeset: 1589426 User: tomat Checked in by: merllab Date: Thursday, February 11, 2010 9:57:12 PM Comment: Optimizes allocation of singletons. Module singletons could be allocated lazily. We used to eagerly allocate a singleton for each allocated RubyModule. This is only necessary for classes. Their singletons are chained in the inheritance hierarchy parallel to the hierarchy of the classes. A module doesn't have a super-class and thus we don't need to create a singleton for it unless it has some members. Consequently 2 modules of the same meta-module type with no singletons can share the same call-site rules. This sharing significantly improves RoR request time and reduces working set since the request processing code is using such modules. Also fixes a few releated minor bugs. (Shelveset: SingletonOptimizations;REDMOND\tomat | SNAP CheckinId: 10338) Items: edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/ClassInitGenerator/Libraries/LibraryDef.cs add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Experimental/Singletons/DummySingletons.rb edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Experimental/Singletons/Ultimate.MethodLookup.rb edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/RubyTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/CloningTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/ClrTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/SingletonTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/ClassOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/ModuleOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/Precision.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/SingletonOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Initializers.Generated.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/ParseTree/IronRubyParseTreeOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/LibraryInitializer.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyClass.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyClass.Meta.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyModule.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyStruct.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Compiler/ReflectionCache.Generated.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/Calls/RubyMetaBinder.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyContext.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyExceptionData.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyExceptions.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyScope.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyUtils.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby4.sln Check-in Notes: Code Reviewer: Performance Reviewer: Security Reviewer: ----------------------------------------------------------------------------------------------------------------------- Changeset: 1589071 User: sborde Checked in by: merllab Date: Thursday, February 11, 2010 5:15:53 PM Comment: Adds OpenSSL::SSL::SSLError which fixes all the remaining active_resource failures Adds an overload of NoMethodError.new that takes 3 arguments Implements Zlib.crc32 (Shelveset: rails;REDMOND\sborde | SNAP CheckinId: 10336) Items: edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/Exceptions.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Initializers.Generated.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/OpenSSL/OpenSSL.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Zlib/zlib.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Scripts/utr/active_record_tests.rb edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Scripts/utr/active_resource_tests.rb Check-in Notes: Code Reviewer: Performance Reviewer: Security Reviewer: ----------------------------------------------------------------------------------------------------------------------- Changeset: 1586787 User: tomat Checked in by: merllab Date: Wednesday, February 10, 2010 11:39:35 AM Comment: Improves perf of String#+ (Shelveset: MutableStringConcatPerf2;REDMOND\tomat | SNAP CheckinId: 10323) Items: edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/MutableStringTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/MutableStringOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/MutableString.BinaryContent.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/MutableString.CharArrayContent.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/MutableString.Content.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/MutableString.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/MutableString.StringContent.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyClass.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/Utils.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Scripts/ircoverage.bat Check-in Notes: Code Reviewer: Performance Reviewer: Security Reviewer: ----------------------------------------------------------------------------------------------------------------------- Changeset: 1584920 User: jimmysch Checked in by: merllab Date: Tuesday, February 09, 2010 2:10:00 PM Comment: Check in SL4 beta (4.0.41108) and latest internal SL4 (4.0.50205): Outer-ring Changes ------------------ - BigInteger.Parse isn't available in Silverlight, so remove it from BigIntegerV4 - Don't expose HashSet from Microsoft.Dynamic in Silverlight, since it's in been added back to System.Collections.Generic. - Throw in PAL's GetFiles and GetDirectories (should be overridden in Microsoft.Scripting.Silverlight's many PALs) IronPython changes ------------------- - IronPython.Runtime.Binding.CompatibilityGetMemberBinder should always return false from InvokeOnGet. Silverlight changes ------------------- - Because Python/Ruby/Microsoft.Dynamic depend on System.Numerics and Microsoft.CSharp, and it is NOT in the core in SL4 (it's in the SDK), need to make sure it gets added to the XAP/SLVX files. Infrastructure changes ---------------------- - All Chiron's build configurations have "Silverlight" prepended to it, so update that in all the various solution files (IronPython.sln, Ruby.sln, etc). Also make sure that Chiron builds last. - Update SL4 Beta in v4-x86fre and latest SL4 in v4-internal-x86fre. o Note: Python (build against SL4Beta) does not work in SL4Beta, as there have been breaking changes from SL4 Beta that IronPython depends on. Both work fine against internal build, and Ruby works fine against SL4Beta. Also, both built against SL3 work in SL4 (both beta and internal build). - Add SLv4 aliases for building and running Chiron (bsd4, chd4, etc) o builds against beta by default: to build against internal build: bsd4 /p:SilverlightPath="%MERLIN_ROOT%\utilities\silverlight\v4-internal-x86fre" - Fixes for update_silverlight.rb (Shelveset: sl4-beta-and-internal;REDMOND\jimmysch | SNAP CheckinId: 10321) Items: edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Ruby.csproj edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby4.sln Check-in Notes: Code Reviewer: Performance Reviewer: Security Reviewer: ----------------------------------------------------------------------------------------------------------------------- Changeset: 1570153 User: sborde Checked in by: merllab Date: Monday, February 08, 2010 9:00:09 PM Comment: Fixed issue with extra 0s being appended to id. This was being caused by a bug in BigDecimal#to_i Fixed issue in ironruby-dbi with Statement#fetch being called after the reader was closed Fixed issue in ironruby-dbi where multiple Statements were active for a connection. We need to close the previous Statement first Will follow up to get these fixes into the ironruby-dbi gem Modified "utr -i foo" to generate tags to disable failing test in the utr\foo_tests.rb file itself. This way, it is possible to run "utr -i foo" in a loop and generate tags for all flaky tests (ie. tests which fail non-deterministically) Ran "utr -i active_record" to tag all failing ActiveRecord tests. Enabled the ActiveRecord tests in irtests (Shelveset: ar;REDMOND\sborde | SNAP CheckinId: 10307) Items: edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/BigDecimal/BigDecimal.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Scripts/irtests.rb edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Scripts/generate_test-unit_tags.rb edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Scripts/utr.rb edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Tests/Scripts/utr/active_record_tests.rb Check-in Notes: Code Reviewer: Performance Reviewer: Security Reviewer: ----------------------------------------------------------------------------------------------------------------------- Changeset: 1569144 User: tomat Checked in by: merllab Date: Monday, February 08, 2010 3:36:53 PM Comment: 1) Implements a new block return optimization. It targets frame unwinding in the cases of returning from (nested) blocks like these: def foo x.times do y.times do return end end end We were throwing an exception in such cases to unwind the block frames. This is unnecessary because we already handle other kinds of control-flow (retry) in call sites with a block (x.times and y.times in the example above). So adding one more check (for frame unwinding return) there enables us to not throw an exception and doesnÆt slow down the fast path (no cross-frame control flow). 2) Removes an unnecessary allocation in dynamic call sites that dispatch to a Ruby method and take a block. 3) Adds targeted unit tests to increase code coverage of control flow constructs. (Shelveset: CFOptimization4;REDMOND\tomat | SNAP CheckinId: 10309) Items: edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/RubyTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/BlockTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/LoopTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/OverloadResolutionTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/SuperTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/Enumerable.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/ProcOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/ThreadOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Extensions/TypeGroupOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Initializers.Generated.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Thread/ThreadOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/Proc.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Compiler/Ast/Definitions/MethodDefinition.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Compiler/Ast/Expressions/MethodCall.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Compiler/Ast/JumpStatements/ReturnStatement.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Compiler/Ast/LeftValues/LeftValue.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Compiler/ReflectionCache.Generated.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/BlockParam.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/Calls/MethodDispatcher.Generated.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/Calls/RubyCallSignature.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/Calls/RubyMethodInfo.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyOps.FlowControl.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/StackUnwinder.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Scripts/ircoverage.bat Check-in Notes: Code Reviewer: Performance Reviewer: Security Reviewer: ----------------------------------------------------------------------------------------------------------------------- Changeset: 1561136 User: tomat Checked in by: merllab Date: Saturday, February 06, 2010 5:43:11 PM Comment: The OverloadResolver was performing quite a bit of reflection (mostly calling ParameterInfo.IsDefined) which turned out to consume about 15% of RoR request time. This change introduces OverloadInfo abstraction which captures all properties of a method that are needed to perform overload resolution. The default implementation (ReflectionOverloadInfo) holds on a MethodBase and uses reflection to determine these properties. The implementation caches information that is expensive to retrieve via reflection. The OverloadInfo is a public abstract class and could be implemented by languages so that almost no reflection is needed at runtime. The ultimate goal is to remove OverloadResolverÆs dependency on Reflection types (other than Type). This change goes half way û it abstracts away reflection in the first phase of overload resolution (building target sets). More work needs to be done to remove the dependency on Reflection completely in the expression building phase. It would also require some breaking changes in DLR so we keep that part post IronRuby v1.0. IronRuby implements LibraryOverload subclass of OverloadInfo. Library initializers generator performs custom attribute reflection on library methods and compresses the retrieved information to 31 bits. It imposes a limit of 15 parameters on library methods (more parameters can be supported if needed). The flags are then used at overload resolution time instead of calling ParameterInfo.IsDefined. The difference in perf: > ir.exe -X:CompilationThreshold 2 test.rb // before change Initialized in 7.8005s 10000 requests: 289 requests per second Peak working set: 217MB // after change Initialized in 7.64449s 10000 requests: 337 requests per second Peak working set: 216MB (Shelveset: OverloadInfo8;REDMOND\tomat | SNAP CheckinId: 10301) Items: edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/ClassInitGenerator/Libraries/LibraryDef.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/LoaderTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/OverloadResolutionTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/ProtocolTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/IronRuby.Tests/Runtime/SplattingTests.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/Enumerable.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/EnvironmentSingletonOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/FileOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/HashOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/KernelOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/MatchDataOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/MethodOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/ModuleOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/MutableStringOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/Precision.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/PrintOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/ProcOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/RubyRegexOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/RubyTime.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/SingletonOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/StructOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/ThreadOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/UnboundMethod.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Enumerator/Enumerator.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Extensions/ClrInteger.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Extensions/ClrStringOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Extensions/IDictionaryOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Extensions/IListOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Extensions/ScopeOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Extensions/TypeGroupOps.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Iconv/Iconv.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Initializers.Generated.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/StringIO/StringIO.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Thread/SizedQueue.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/LibraryInitializer.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyClass.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyStruct.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Ruby.Build.csproj edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Ruby.csproj add $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/Calls/LibraryOverloadInfo.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/Calls/RubyLibraryMethodInfo.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/Calls/RubyMethodGroupBase.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/Calls/RubyMethodGroupInfo.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/Calls/RubyOverloadGroupInfo.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/Calls/RubyOverloadResolver.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/Conversions/ProtocolConversionAction.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/Protocols.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyContext.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyScope.cs edit $/Dev10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyUtils.cs Check-in Notes: Code Reviewer: Performance Reviewer: Security Reviewer: ----------------------------------------------------------------------------------------------------------------------- ironruby-0.9.4 (RC2) 2010-02-10 ------------------------------- Here are all the commits for this release: http://github.com/ironruby/ironruby/commits/v1.0-rc2 Up until the first commit after the last release: http://github.com/ironruby/ironruby/commit/6da2f24f57cb0f3799daac2ba190f7888cf7753c The following commit messages are for all the commits in GIT which are marked as "sync to tfs" or something to that effect: ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1561136 User: tomat Checked in by: merllab Date: Saturday, February 06, 2010 5:43:11 PM Comment: The OverloadResolver was performing quite a bit of reflection (mostly calling ParameterInfo.IsDefined) which turned out to consume about 15% of RoR request time. This change introduces OverloadInfo abstraction which captures all properties of a method that are needed to perform overload resolution. The default implementation (ReflectionOverloadInfo) holds on a MethodBase and uses reflection to determine these properties. The implementation caches information that is expensive to retrieve via reflection. The OverloadInfo is a public abstract class and could be implemented by languages so that almost no reflection is needed at runtime. The ultimate goal is to remove OverloadResolver’s dependency on Reflection types (other than Type). This change goes half way – it abstracts away reflection in the first phase of overload resolution (building target sets). More work needs to be done to remove the dependency on Reflection completely in the expression building phase. It would also require some breaking changes in DLR so we keep that part post IronRuby v1.0. IronRuby implements LibraryOverload subclass of OverloadInfo. Library initializers generator performs custom attribute reflection on library methods and compresses the retrieved information to 31 bits. It imposes a limit of 15 parameters on library methods (more parameters can be supported if needed). The flags are then used at overload resolution time instead of calling ParameterInfo.IsDefined. The difference in perf: > ir.exe -X:CompilationThreshold 2 test.rb // before change Initialized in 7.8005s 10000 requests: 289 requests per second Peak working set: 217MB // after change Initialized in 7.64449s 10000 requests: 337 requests per second Peak working set: 216MB ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1560250 User: jdeville Checked in by: merllab Date: Friday, February 05, 2010 2:20:09 PM Comment: Upgrades the IronRuby installer creation to Wix3. * Adds Wix3 files to External * Refactor's installer wxs's to allow per-user installs * lays the foundations for per user installs ** At this time I am unable to get a true single package installer to work correctly. I plan on looking into this more, but for now elevation is still required * Adds a rake library and a Rakefile for building the MSI. `rake IronRuby-0.9.4.0.msi` will build the stated file. This requires Wix3 since it uses the HEAT tool. * Updates the version number to 0.9.4.0 ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1559161 User: jdeville Checked in by: merllab Date: Thursday, February 04, 2010 11:33:13 PM Comment: Closes: http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2146 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2959 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2949 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2907 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2765 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2753 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2686 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2462 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1357 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=3183 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2913 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=957 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1849 * Also adds a spec for CP# 3834 * Adds the ComTest project and exe, and modifies InstallAndRun.bat to register it * Deletes the ADODB specs in favor of the COMTest specs Also includes the IR Release queue files that are live on MerlinSnap1 to check them in. ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1546541 User: jimmysch Checked in by: merllab Date: Monday, February 01, 2010 9:46:49 PM Comment: Couple of easy fixes for IronRuby 1.0 RC2: "NoOf" does not mangle to "no_of" http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=3562 exec cant run a batch file http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=3619 ir.exe -e doesn't treat arguments correctly http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=462 IO.pipe and IP.sysopen not defined http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1919 Zlib::Deflate missing constructors http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=3319 See bugs for more info. ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1545267 User: tomat Checked in by: merllab Date: Monday, February 01, 2010 3:25:22 AM Comment: Kernel#binding captures receiver and eval uses it as "self". Adds FxCop configuration to yaml .csproj. ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1544575 User: tomat Checked in by: merllab Date: Saturday, January 30, 2010 11:50:02 AM Comment: Fixes: http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=3306 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=3307 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=3616 and related issues. Enables some tests in active_support suite. ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1544546 User: tomat Checked in by: merllab Date: Saturday, January 30, 2010 10:59:27 AM Comment: Fixes target object boxing in singleton method definition. ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1544319 User: sborde Checked in by: merllab Date: Friday, January 29, 2010 6:21:06 PM Comment: Config::CONFIG[“libdir”] was not normalized in non-dev environments. This was causing "igem install" to install bat files for the gems to a less than ideal location. Adds some dash_r specs ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1532924 User: jimmysch Date: Thursday, January 28, 2010 7:48:26 PM Comment: Update ironruby.rack readme, and add a fails tag for the adodb com interop test which keeps failing in snap (OK'd by jdeville). ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1532917 User: jimmysch Checked in by: merllab Date: Thursday, January 28, 2010 7:38:01 PM Comment: Fixes for running rack-based applications. Ruby changes: - Put ESPIPE class in Errno module; it was defined at top-level which is incorrect, and Sinatra's error-reporting depends on it. - Remove 'hacks' from irake; it doesn't exist anymore - Adds sinatra 0.9.4 and make sure other gems have executables in the gembin dir. If that is added to the path, then "ir -S rails" will work. IronRuby.Rack changes: - Fix bug that the "Rails checkbox" found: http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#M001612. Basically take the query-string and request body directly from IIS, rather than *incorrectly* reconstructing it. =P - rack.version should be set to Rack::VERSION, rather than hardcoded. - Generate the rack env with Ruby types the first time around, and only execute Ruby code where needed. - Make sure AppPath is a full path - Lazy load web.config settings, and allow setting RACK_ENV from web.config. - Remove locks in HttpHandler and HttpHandlerFactory. - Implement a asynchronous request handler, but it's not wired up yet. - Manually set TOPLEVEL_BINDING since it's not set automatically when IronRuby is embedded. - Canonlicalize paths of files added to the load path, so Ruby files always show "/" as the path separator. - Ruby errors shouldn't be swallowed because the error handler threw - Always log exceptions to ironrack.log, and only show them to the HTML page when RACK_ENV is 'development' or the build is DEBUG. - Update Rails example app, and run all examples in RACK_ENV production mode. - Add Rails example that uses ActiveRecord (IronRuby.RailsDB.Example) - Add Microsoft.Dynamic.csproj to IronRuby.Rack.sln - Update permissions instructions in README. - Clean up little perf test, and add an actual test of IronRuby.Rack, though testing is still very lacking. ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1496558 User: tomat Checked in by: merllab Date: Wednesday, January 27, 2010 5:19:21 PM Comment: File.basename fix ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1496258 User: tomat Checked in by: merllab Date: Wednesday, January 27, 2010 2:26:19 PM Comment: tfpt review /shelveset:RSym14;tomat DLR: Adds ExpressionCollectionBuilder as a specialization of ExpressionCollectionBuilder. Ruby: Replaces SymbolId usage by RubySymbol class. Ruby symbols are possibly encoded interned frozen strings. Enables KCODE on Silverlight. Allows class reopening in libraries (a class defined in Ruby can be reopened by a library class). Fixes bunch of bugs in YAML. Fixes http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=3466 ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1494375 User: sborde Checked in by: merllab Date: Tuesday, January 26, 2010 4:48:53 PM Comment: Dir.mkdir should raise Errno::EACCESS instead of System.UnauthorizedException Diables ActiveRecord tests since some fail intermittently ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1493766 User: jimmysch Checked in by: merllab Date: Tuesday, January 26, 2010 12:12:15 PM Comment: -S command-line argument: load file from path (eg. ir -S irb) (Shelveset: dash_upper_s;REDMOND\jimmysch | SNAP CheckinId: 10198) ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1484364 User: sborde Checked in by: merllab Date: Monday, January 25, 2010 2:12:20 PM Comment: Enables active_record tests in irtests.rb. They require SQLExpress to be installed on the machine. ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1482236 User: sborde Checked in by: merllab Date: Friday, January 22, 2010 5:44:06 PM Comment: Flushes out iconv implementation. Added more specs Made String#encoding visible only in 1.9 mode Adds optional paramter to StringScanner.new The above fixes enable many more Rails tests ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1481259 User: jdeville Checked in by: merllab Date: Friday, January 22, 2010 10:22:23 AM Comment: cleans up a few critical tags: * re-patches mock.rb with the patch to remove respond_to last * implements a basic implementation of ARGF, there are many holes that still need to be filled in the back end, but the basic idea works, and the specs are no longer critical. ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1481229 User: jdeville Checked in by: merllab Date: Friday, January 22, 2010 9:14:51 AM Comment: Silverlight Debug binaries raise an assert when hit by the tests, and if SL Debug is built after SL Release, the SL Debug binaries overwrite the SL Release binaries in the IIS direcotry. By not running BuildSilverLightTests.bat we ensure that only the release binaries get tested, even if they run on the same machine one after another. This also fixes the assert issue by changing the code page in Silverlight (Shelveset: silverlightdebugfix;REDMOND\jdeville | SNAP CheckinId: 10174) ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1480603 User: sborde Checked in by: merllab Date: Friday, January 22, 2010 12:01:14 AM Comment: Added active_resource and action_mailer tests to irtests.rb Added a category (disable_unstable_tests) of unstable tests to utr.rb so that we can track non-deterministic failures. Also a category (exclude_critical_files) for critical test files that cause an exception when loaded (even if no tests are run from the file). Disabled a TestMultiTask test in rake_tests. MultiTaskTest uses monitor.rb which uses Thread.critical= in a way that is not friendly with native threads. Ideally, we will implement our own version of monitor.rb that does not uses Thread.critical= ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1480064 User: jdeville Checked in by: merllab Date: Thursday, January 21, 2010 3:32:17 PM Comment: Moves APTCA out of an if SIGNED ifdef so we pass FxCop when unsigned. ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1479709 User: tomat Checked in by: merllab Date: Thursday, January 21, 2010 1:57:23 PM Comment: Implements BEGIN and END blocks. Fixes exception handling during shutdown. Fixes block comparisons. ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1479540 User: sborde Checked in by: merllab Date: Thursday, January 21, 2010 11:32:57 AM Comment: Updates to Rails 2.3.5 ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1479538 User: sborde Checked in by: merllab Date: Thursday, January 21, 2010 11:29:28 AM Comment: open("|shell_command") Removes other tags for Kernel.open ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1478595 User: dinov Checked in by: merllab Date: Thursday, January 21, 2010 8:20:13 AM Comment: 25819 DynamicObject.TryBinaryOperation not called for comparison operators 25477 Compat conversion binder isn't used to let objects convert themselves We need to respect errorSuggestion and always fallback for all binders. Also fixes a problem w/ incorrect # of arguments in the invoke binder. 25796 Debugging is Hit-and-Miss under 2.6 and Eclipse We cannot clear the trace pipeline when calling a trace function because that will clear it for all threads. Instead we remember if we are in a traceback and if so don’t dispatch further events. Also fixes an issue where the code name was in correct (should be “”) and updates a bunch of tests accordingly. 25775 Can't delete function attributes. This was already fixed, adding a test case 25700 Importing is not thread safe We need to lock when creating a built-in module. 25673 Silverlight lookup_error isn't available Just making this available in Silverlight be removing ifdef’s 25708 ctypes.wintypes missing / wintypes simple types not implemented Add support for variant bool type along w/ new test cases added to CPython’s ctypes tests 25709 _winreg exception missing error codes Improves the error reporting in _winreg, and also improves our automatic translation of Win32Exceptions. Also: Fixing span reported for function w/o parameters Fix issue w/ calling flush on non-Python file Moving PythonService to GetService API so it works cross-process Fixing performance of getting/setting scope vars via object operations Standardizes on Not/IsFalse DLR expression types Exposes PropertyType for all ReflectedGetter/Setters Exposes DynamicOperations off of LanguageContext for languages to use Adds CreateModule API to Python class for creating and publishing modules codeplexcomment ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1475764 User: tomat Checked in by: merllab Date: Tuesday, January 19, 2010 7:37:08 PM Comment: The changeset focuses on reducing time spent in JIT to compile generic instantiations of various helper methods. These are mostly related to generic instructions that implement dynamic sites and method calls. It reduces the number of methods jitted during startup time of irb from 481 to 80 (with -X:CompilationThreshold 10000000), which translates to 34% time reduction: rbr -X:CompilationThreshold 10000000 i.rb < exit.txt i.rb: --- s = Time.now require 'irb' IRB.start(__FILE__) t = Time.now p t - s --- Before: 0.961096 seconds After: 0.631063 seconds DLR Adds LightDynamicExpression – these reducible nodes reduce to strongly typed DynamicExpressions yet when interpreted use untyped dynamic sites (sites typed to CallSite>). Using light sites avoids jitting generic instantiations of various instructions, stubs and helpers that are strongly typed to the call-site signature. Also, strongly typed delegate types are created only when compiling the sites. Adds helpers to CallInstruction that add MethodInfo to CallInstruction mapping into the internal cache. These helpers can be used by reflection caches that look up CLR helper methods. For example, Ruby’s ReflectionCache holds on MethodInfos for all RubyOps. Whenever a helper MethodInfo is needed a delegate is created for it and cached into CallInstruction’s cache along with the instruction that dispatches to it. Since all static helpers are known upfront the delegates and the corresponding instructions can all be ngen’d. Moves helpers for rule interpretation from Ruby to DynamicUtils. Python Replaces LazyDynamicExpressions with subclasses of LightDynamicExpressions. Ruby Simplifies rules interpretation, moves related helpers to DLR. Uses LightDynamicExpression for all dynamic sites. Uses CallInstruction caching for RubyOps. ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1475657 User: sborde Checked in by: merllab Date: Tuesday, January 19, 2010 5:35:17 PM Comment: ("%+d" % 0) should equal "+0", not "0" defined? should clear $! of any exception that may have been thrown by const_missing Makes NativeMethods.SetEnvironmentVariable check if the call succeeded Added –g to utr.rb to generate the tags for the failing tests Adds an unstable tag for library\socket\basicsocket\send_spec as it hung on my machine Fix for library\logger\logger\new_spec closing STDERR ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1475655 User: rdawson Checked in by: merllab Date: Tuesday, January 19, 2010 5:33:34 PM Comment: Bug fixes for gopackage against the latest dev10 ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1473028 User: jdeville Checked in by: merllab Date: Monday, January 18, 2010 1:41:35 PM Comment: Updates RubySpecs and fixes bugs in FileOps, FileTest and Kernel. Also implements etc.rb to match MRI on windows. ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1472246 User: sborde Checked in by: merllab Date: Monday, January 18, 2010 8:16:30 AM Comment: Fixes a bug in Proc equality comparison which was causing the ActionPack caching tests to fail ENV["foo"] = "" should set the environment variable to an empty string, not delete it Added Iconv::IllegalSequence etc Implements RubyLambdaMethodInfo.GetArity Rails test expect Array#sort_by to be a stable sort (ie. if #<=> returns 0, then the relative order of the elements in the original array is maintained). Worked around this in action_pack_tests Splits up the Rails test harness files into tests that fail with MRI as well (which are often issues with the test) Changes the tests to load specific versions of Rails and other gems. Without that, you get load errors because of incorrect versions being loaded Changed the default of irtests to run the Rails tests. They can be skipped by using -m (for "minimum") Added –r to utr.rb to run a single test case. ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1461731 User: jimmysch Checked in by: merllab Date: Tuesday, January 12, 2010 2:11:06 PM Comment: IronRuby should emit PDBs in Silverlight ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1453163 User: sborde Checked in by: merllab Date: Friday, January 08, 2010 1:35:10 PM Comment: Fixes 25448: Can't use ObservableCollection in clrtype.py Added some basic tests for clrtype.py other than the small sample. With this in place, it will be easier to add more tests going forward for new issues. Fixed some other bugs that were caught by the new tests ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1438355 User: tomat Checked in by: merllab Date: Thursday, January 07, 2010 2:52:59 PM Comment: Adds support for Mono to Dev.bat. Dev.bat takes an optional “mono” parameter and a path to the Mono bin directory. If supplied, it sets ROWAN_RUNTIME environment variable to “mono” and Mono bin directory is added to PATH. ROWAN_RUNTIME variable is used by ir.cmd, irtest, and irtests.rb. Adds aliases ipym, ipyrm, ipydm, rbxm, rbrm, rbdm that launch IronPython and IronRuby on Mono. Fixes issues reported by mcs. ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1429753 User: tomat Checked in by: merllab Date: Wednesday, January 06, 2010 1:32:35 PM Comment: DLR, Python: - Adds more file system APIs to PAL. Obsoletes virtual methods GetFiles and GetDirectories in favor of GetFileSystemEntries. Ruby: - Fixes some Dir specs, adds support for Unicode file/directory names. - Changes Dir and File methods to use PAL for file system operations. Adds Dir tests exercising a custom virtual file system. - Fixes encoding of file paths. This might fix some of the reported System::Text::DecoderFallbackException issues (http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2931) - Fixes issues with –v command line option. - Fixes bugs in methods using MutableString.GetByteArray. - Fixes MutableString#inspect and dump to handle strings with incomplete UTF16 characters. - Fixes bugs in glob. ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1426166 User: tomat Checked in by: merllab Date: Tuesday, January 05, 2010 7:22:28 PM Comment: (AstImprovements2) DLR: Adds ExpressionCollectionBuilder (moves the implementation from IronRuby). This allows to construct optimized expressions via C# initializer syntax. Adds a subclass BlockBuilder that can be used to build blocks like so: Expression result = new BlockBuilder { expression1, … (condition) ? foo : null, anotherExpression }; If the expression used in the initializer is null it is skipped. If the expression is a sequence of expressions (IEnumerable) its content is included in the block. BlockBuilder defines an implicit conversion to Expression. Ruby: Tree transformation refactorings: - Replaces some AstFactory utility methods with AstUtils equivalents. - Creates Lambda explicitly to avoid calls to MakeGenericType. - Uses BlockBuilder for building complex blocks. ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1425432 User: tomat Checked in by: merllab Date: Tuesday, January 05, 2010 11:07:32 AM Comment: Fixes http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2819&ProjectName=ironruby. Sets RUBY_PLATFORM according to Environment.OSVersion.Platform. ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1405890 User: jdeville Checked in by: merllab Date: Wednesday, December 30, 2009 1:51:56 PM Comment: Closes the following bugs: http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=3196 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2118 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2044 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2217 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2912 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2962 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1920 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2116 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1353 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1354 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1651 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2051 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2892 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2827 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2514 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2654 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2191 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2190 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1558 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1486 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1485 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=923 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=597 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1483 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2421 ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1366657 User: jdeville Checked in by: merllab Date: Thursday, December 17, 2009 11:16:24 PM Comment: Unifies the test runner for Test::Unit. I've really just removed the duplication found in the various *Tests.rb files in Ruby\Tests\Scripts. I've adjusted all affected scripts: * irtests * generate_test-unit_tags.rb * rake.generictest * rubygems.generictest Also adds tzinfo to SNAP Usage of utr: utr testname will run the tests setup by the file testname_tests.rb, thus utr gem will run the Gem tests. Passing the -all flag will ignore the skipped tests and run all tests, this currently doesn't work for gems, but I will be removing our custom skips and going back to the monkeypatching model. Eventually, I will implement a -list flag to list all tests utr can see. ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1346865 User: ddicato Checked in by: merllab Date: Tuesday, December 15, 2009 10:24:40 AM Comment: Removes some excess methods from BigIntegerV4 that the underlying BigInt does not implement, to help phase out this wrapper: - Moves ToFloat64 and TryToFloat64 into MathUtils as extension methods - Removes the IConvertible interface from BigIntegerV4 Fixes minor bugs in math.cs and socket.cs, and removes dependenies on BigInteger's IConvertible methods. Corrects BigIntegerV2's broken right-shift so we don't have to permute the value in LongOps.RightShift (which is broken given BigIntegerV4's correct behavior). Fixes BigIntegerV4's float and double conversions to overflow properly by adding an implicit BigInteger to double conversion. ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1309049 User: tomat Checked in by: merllab Date: Friday, December 04, 2009 5:17:58 PM Comment: Fixes handling of encoded strings in MutableString.Append, CompareTo and Inspect. Fixes http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2892 ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1309042 User: dinov Checked in by: merllab Date: Friday, December 04, 2009 5:15:01 PM Comment: Default Binder Improvements: Decouples DefaultBinder from ScriptDomainManager. Leaves ScriptDomainManager ctors for backwards compat, moves IronPython/IronRuby to overriding PrivateBinding which is the only reason we needed the SDM Makes DefaultBinder non-abstract so that you can simply new one up if you don't need any customization Removes unused "DefaultLanguageContext.cs" file which was actually a DefaultBinder subclass Adds overloads for various default binder operations which don't take a OverloadResolverFactory - instead they use the DefaultOverloadResolverFactory. Adds DoOperation overload which takes an ExpressionType for better compat w/ the DLR binders, obsoletes string version, moves this lookup for OperatorInfo into a dictionary lookup Also starts adding some unit tests for the default binder ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1305319 User: tomat Checked in by: merllab Date: Thursday, December 03, 2009 12:12:24 PM Comment: Implements adaptive loop compilation. This feature needed major changes to local variable handling and control flow implementation in interpreter. Local variables Replaces a list of local variables with LocalsVariable structure that encapsulates a dictionary. It doesn’t support variable shadowing yet but it at least detects it and throws NotSupportedException. Previously we silently used wrong indices to the variable array. Control flow Reimplements interpreter goto instructions and exception handling. Goto instructions used to encode all information describing the jump (a list of finally blocks to be executed and target stack depth). The loop compiler needs to find all GotoExpressions within the loop that jump out of the loop and associate them with the corresponding Goto instructions. This cannot be done in presence of reducible nodes as they don’t preserve nodes identity. Therefore we need to move the jump information from goto instruction to the target label and track current try and finally blocks. GotoInstruction, EnterTryFinallyInstruction and LeaveExceptionHandlerInstruction derive now from IndexedBranchInstruction. While OffsetInstruction hold on a relative offset these instructions hold on the target label index in the table of RuntimeLabels. RuntimeLabel struct comprises of target instruction index and target stack depth and target continuation stack depth. That’s all it is needed for a jump to be executed. Jumps via label index are a little bit slower than jumps to relative offset since they need to look up the target index in the label table. Also the label table is only as big as there are gotos and try-catch/try-finally blocks in the lambda. We can easily convert other branch instructions into IndexedBranchInstructions if we find it better. Using indexed branch instructions moves target stack depth to the label. We also need to move finally list out of goto instruction. Since a single label might be used as a target of multiple goto instructions/expressions and these could be nested in different try-finally blocks we need to track the stack of finally blocks that we enter and leave as we execute instructions. EnterTryFinallyInstruction is added at the beginning of every try-finally block. This instruction pushes a local continuation into the stack of continuations stored on InterpretedFrame. The top item of this stack is current continuation. A continuation is implemented as an integer index into label table. The continuation pushed by EnterTryFinally points to finally clause. GotoInstruction sets the current pending continuation and pending value (if it transfers a value) and jumps to the current continuation if there is any. A GotoInstruction is emitted at the end of the try-finally body. This goto’s target is the end of the entire try expression. EnterFinallyInstruction is emitted at the beginning of finally clause. It removes the current continuation from the continuation stack, pushes the pending continuation and value onto the data stack and invalidates them. If any exception is thrown but not caught during execution of finally clause the current pending continuation is canceled (and forgotten) and a new one is set. LeaveFinallyInstruction is emitted at the end of the finally clause. It pops the pending continuation (and pending value) from data stack and yields to it. YeildToPendingContinuation operation compares continuation stack depth of the current continuation with the continuation stack depth of the pending one. It jumps to the pending one only if its depth is less, i.e. when there is no continuation (finally clause) to be executed before we can jump to the target block. Otherwise it jumps to the current continuation. Whenever an exception occurs we catch it in Interpreter.Run method. We look for the exception handler that should be executed. If we find one we perform the same steps as if we just executed GotoInstruction targeted to the exception handle: we set the current pending continuation to the label that points to the handler and set pending value to the exception object. Finally, we jump to the current continuation. If there is no catch or fault handler we do the same as if there was one with instruction index Int32.MaxValue. That emulates a jump to the end of the instruction sequence. If this jump is not interrupted by another exception raised from some finally/fault block or goto jumping from a finally block we finish instruction execution and return from Run method with the current InstructionIndex set to the special value Int32.MaxValue. That indicates that we should rethrow the exception and so we do. Moves InterpretedFrame chaining from IronRuby to the interpreter. The frames are linked into a stack by Interpreter.Run method so that each CLR frame of this method corresponds to an interpreted stack frame in the interpreted stack. The two traces can be combined into one. A static ThreadLocal variable is updated upon entry and exit from Run method. Loop compiler Adds a new EnterLoopInstruction that is injected at the beginning of a loop generated from LoopExpression. This instruction has a counter that increments each time it is executed. If the counter reached CompilationThreshold a compilation is started on a background thread. The instruction holds on the LoopExpression to compile. The loop needs to be massaged before we can compile it to a lambda. The lambda we produce looks like: int lambda(InterpretedFrame frame) { T$1 loc$1 = (T$1)frame.Data[$index1]; … T$n loc$n = (T$n)frame.Data[$indexN]; StrongBox closure_loc$1 = frame.Closure[$index1]; … StrongBox closure_loc$M = frame.Closure[$indexM]; try { … loc$1 = value … … closure_loc$1.Value = (object)value; … return frame.Goto(labelIndex, value) // for each goto label (value), where label is outside loop } finally { // write back Frame.Data[$index1] = (object)loc$1; } return $breakOffset; } When the lambda is ready the EnterLoopInstruction is replaced by a CompiledLoopInstruction that holds on a delegate to the compiled lambda and calls it upon execution. Perf impact The interpreter thruput with disabled compilation is about 5% worse on Pystone with this change. About 1% amounts for tracking interpreted stack chain the rest is probably due to the more expensive try-finally blocks (continuation stack is allocated, continuations are pushed/popped on entry/exit to try and finally blocks, etc.). –X:NoAdaptiveCompilation is now better than adaptive compilation only by 4-7% (for compilation threshold 2 and 32, respectively), it used to be about 4 times better. Misc Special cases adaptive compilation for CompilationThreshold 0 and 1. In both cases the compilation is synchronous. This allows us to easily test and debug loop compiler and lambda compiler. Implements instruction provider for FinallyFlowControlExpression – the interpreter handles jumps from finally directly, so we don’t need to rewrite the tree. FlowControlRewriter should reduce all extensible nodes within the tree. It might miss some goto expressions or finally clauses otherwise (e.g. { label: try { REDUCIBLE } finally { REDUCIBLE; } }, where any of the REDUCIBLEs reduces to “goto label”. Ruby, Python: CatchBlock defines a scope for its exception variable, which wasn’t taken into account in Python and Ruby AST generators and rewriters. They declared the variable in the containing block duplicating the variable definition and depending on variable shadowing. Removes the duplicate declarations. Removes “compileLoops” argument passed to LightCompile. All loops are adaptively compiled now. Python Increases test_memory limit to 18k since the loop is adaptively compiled now. We might want to disable adaptive compilation during this test. Disables test_dict.py run:test_container_iterator. Filed bug: http://ironpython.codeplex.com/WorkItem/View.aspx?WorkItemId=25419 Disables test_traceback.py run:test_throw_while_yield. Filed bug: http://ironpython.codeplex.com/WorkItem/View.aspx?WorkItemId=25428 Ruby: Fixes mangling of “me” name. Disabled one test case in core/kernel/caller_spec.rb. The behavior that made this test accidentally pass was incorrect. ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1301388 User: tomat Checked in by: merllab Date: Wednesday, December 02, 2009 5:12:48 PM Comment: Fixes Time#strftime, which makes all TzInfo tests pass. Fixes Array#reject and removes a guard from corresponding spec. Cleans up a few specs. ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1300588 User: tomat Checked in by: merllab Date: Wednesday, December 02, 2009 11:26:38 AM Comment: DLR: Fixes http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=3183: OutAttribute on parameters whose type is not ByRef should be ignored. The attribute is only used by native marshaller. Removes dead and duplicate code (various reflection related helpers) and moves them to ReflectionUtils or TypeUtils. Fixes http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=957. Removes non-null restriction on the instance parameter of an extension method - C# allows to call the extension method on null value: public static class Ext { public static bool IsNull(this object value) { return value == null; } } public static void F(object o) { Console.WriteLine(o.IsNull()); } public static void Main() { F(null); } We also didn’t recognize extension methods correctly if they are compiled by desktop C# 3.0 (our IsExtension method only detected those that are compiled by us and thus use ExtensionAttribute in ExtensionAttribute.dll). This causes binding to extension methods to behave differently on desktop CLR from Silverlight. The fix is to use ExtensionAttribute from System.Core v3.5 assembly if it is available at runtime. Ruby: Fixes http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2827: adds ToString, GetHashCode, GetType methods on NilClass. http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2914 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2913 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=3068 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2962 ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1299354 User: tomat Checked in by: merllab Date: Tuesday, December 01, 2009 7:09:12 PM Comment: Implements missing super-call features (super with implicit arguments in eval), fixes bugs, improves super site caching and removes helpers with “out” parameters that were forcing the interpreter to compile the rules. Also removes “hacks.rb” and test directory from Libs since the workarounds implemented there are needed anymore. ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1290543 User: tomat Checked in by: merllab Date: Monday, November 30, 2009 11:26:46 AM Comment: (Time7) Adds NoUnderlyingType to ModuleRestrictions. - If set, the members of the underlying CLR type are not accessible from Ruby (not even via clr_new, etc.) - A Ruby library class/module can either extend an existing CLR type or be self-contained. A self-contained class/module has ModuleRestriction.NoUnderlyingType set by default. Separates Ruby method implementations on RubyTime to a separate class so that we can expose RubyTime underlying CLR type. Fixes bugs and Time related specs: http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2912 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2217 Time zones It seems that MRI is using CRT zone API (_tzset) on Windows. That API (http://msdn.microsoft.com/en-us/library/90s5c885(VS.80).aspx) is buggy and also different from Unix API based on TZ environment variable. The only thing _tzset does is that it parses TZ environment variable value using format < zone offset hh:mm:ss> and stores the parsed values into global variables. It doesn’t look up time zone name in any database (registry) or even allow to specify DST offset and rule (unlike POSIX TZ variable). As a consequence MRI on Windows doesn’t correctly implement daylight saving related API (Time#dst?). If the offset is not specified in TZ variable we don’t know anything about the zone and thus no zone related methods work correctly. And indeed the specs are failing. Besides, MRI doesn’t update the current time zone if TZ environment variable is changed at runtime (it only parses it once when the process is initialized) - http://redmine.ruby-lang.org/issues/show/1972. This change makes IronRuby recognize TZ environment variable and update the current time zone whenever ENV[“TZ”] is assigned to. Current limitations: 1) TZ variable needs to define zone offset. We don’t do time zone name lookup and so only time zone name or abbreviation is not sufficient. If the offset is not specified we use the default time zone provided by OS and report a warning. 2) Time#dst? always uses the default OS zone, not the one that is specified by TZ variable. A warning is reported if the current zone comes from TZ variable. Fixes Time specs that were relying on Unix specific commands. Fixes time related bugs in YAML and a bug in the YAML scanner: http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2044 Enables subclassing socket classes, fixes: http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=3196 There is a bug in tzinfo gem: C:\M0\Merlin\External.LCA_RESTRICTED\Languages\Ruby\ruby-1.8.6p368\lib\ruby\gems\1.8\gems\tzinfo-0.3.15\lib\tzinfo\time_or_datetime.rb Line #43 is missing usec parameter: @time = Time.utc(@time.year, @time.mon, @time.mday, @time.hour, @time.min, @time.sec, @time.usec) unless @time.zone == 'UTC' ----------------------------------------------------------------------------------------------------------------------------------- Changeset: 1286631 User: tomat Checked in by: merllab Date: Tuesday, November 24, 2009 6:30:19 PM Comment: Enables FxCop rules in Globalization group for Ruby assemblies and fixes all violations. Shri's fix to ConditionalVariable: http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=3151. ironruby-0.9.3 (RC1) 2009-11-20 ------------------------------- Here are all the commits for this release: http://github.com/ironruby/ironruby/commits/v1.0-rc1 Up until the first commit after the last release: http://github.com/ironruby/ironruby/commit/81c509da483590e0995f3bd7e5ac27d0d88ab29c The following commit messages are for all the commits in GIT which are marked as "sync to tfs" or something to that effect: --------------------------------------------------------------------------------------------------- Changeset: 1281974 User: sborde Checked in by: merllab Date: Friday, November 20, 2009 12:37:18 PM Comment: Makes Time mutable. It was mapped to System.DateTime which is immutable. However, Time#utc mutates the instance. So now we define a new type Time with a _dateTime field. The core\shared\gmtime test is not enabled because it expects that modifying ENV['TZ'] at runtime changes the timezone, which is not supported yet in IronRuby (and MRI too) --------------------------------------------------------------------------------------------------- Changeset: 1281837 User: jdeville Checked in by: merllab Date: Friday, November 20, 2009 11:27:25 AM Comment: Updates IronRuby to 0.9.3 --------------------------------------------------------------------------------------------------- Changeset: 1277176 User: sborde Checked in by: merllab Date: Wednesday, November 18, 2009 6:53:13 AM Comment: Implements Kernel.srand with no parameters Changes RubyRegex to not clone the input string when being used for String#scan, and to share the cloned string when possible. Without the sharing, you could cause OutOfMemoryException. --------------------------------------------------------------------------------------------------- Changeset: 1265896 User: jdeville Date: Wednesday, November 11, 2009 1:05:07 PM Comment: Fixing transformation paths for .exe.config. doesnt' affect snap. --------------------------------------------------------------------------------------------------- Changeset: 1264343 User: merllab Date: Tuesday, November 10, 2009 6:51:03 PM Comment: (tomat) DLR, Python Ruby: Makes all instruction classes internal except for the base Instruction class. Adds InstructionList class that represents incomplete instruction stream and provides Emit* instructions (like ILGenerator). The class is converted to InstructionArray when finished. Both implement a debug view so that it is easy to see what instructions are being emitted/interpreted. Implements cache for LoadObject instruction – instead of allocating a new instruction per object constant we store the constants into an array and have specialized pre-generated instructions to load them. Adds caching of branch instructions. Adds debug cookies to instruction list in DEBUG builds – each instruction can be associates with one or more debug cookies. LocalAccess instructions use this to store the variable names. The cookies are used in debug view. Groups related instructions into separate files. Implements AddInstuction for all primitive arithmetic types. Adds –X:CompilationThreshold option that sets the number of iterations before we start compiling code. Obsoletes InterpretedMode, NoAdaptiveCompilation and PerfStats properties on LanguageSetup. The options can still be set via dictionary. Reduces the number of instruction instances that are executed at least once during the run of “mspec ci core” from 1,274,454 to 280,684. --------------------------------------------------------------------------------------------------- Changeset: 1250989 User: merllab Date: Tuesday, November 03, 2009 5:23:47 PM Comment: (sborde) Fixes for double formatting on non-English culture ironruby-0.9.2.0 - 2009-10-29 ----------------------------- Here are all the commits for this release: http://github.com/ironruby/ironruby/commits/v0.9.2 Up until the first commit after the last release: http://github.com/ironruby/ironruby/commit/03054a5be81928afaacd16b5ef5d4067f7ecc69a The following commit messages are for all the commits in GIT which are marked as "sync to tfs" or something to that effect: ------------------------------------------------------------------------------- User: merllab Date: Wednesday, October 28, 2009 4:24:48 PM Comment: (tomat) DLR: Misc fixes to Hosting API: - Implements BindInvokeMember on ScopeStorage. - Makes ScriptScope constructor internal. - ObjectOperations.GetMember … performs language specific conversion to T, like ConvertTo and GetVariable - All methods that take IAttributesCollection are obsolete. - Try(Get/Set)Variable(Handle) on ScriptEngine are obsolete. - ScriptRuntime.CreateScope should take IDynamicMetaObjectProvider Ruby - Kernel#require no longer loads Python files, IronRuby#require should be used instead. - Fixes possible race condition in global scope initializer. ------------------------------------------------------------------------------- User: merllab Date: Wednesday, October 28, 2009 12:47:58 PM Comment: (tomat) DLR: The overload resolver should handle a candidate set with no callable method (e.g. have unbound generic parameter). Adds a BindingResult value that indicates such case. Ruby, Python: Disables VSHost process in CLR4 configurations to enable debugging in VS2010. VS2010 doesn’t handle multiple TargetFrameworkVersions per project correctly when launching VSHost process. Ruby: Simplifies ClsTypeEmitter and adds support for overriding default indexers. Fixes http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2907: Previously, generic type definitions were handled as super-classes for their instantiations so that it is possible to add a Ruby method on a generic type definition and call it from any instantiation. This approach breaks when inheriting from a generic type – the inheritance hierarchy is incorrect. It makes more sense to treat generic type definitions as modules – they can’t be instantiated, don’t define any callable methods and we can mix them into their instantiations instead of inheriting from them. Adds an overload to String.new that takes a byte[] and turns it into a binary string. Implements a debug view from RubyMethod. Fixes: http://vstfdevdiv:8080/WorkItemTracking/WorkItem.aspx?artifactMoniker=730017 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2949 Fixes super calls in partial trust. ------------------------------------------------------------------------------- User: merllab Date: Tuesday, October 27, 2009 2:16:40 PM Comment: (jimmysch) Shri: Merge branch 'master' of git://github.com/ironruby/ironruby Fix to irtests.rb for changing Silverlight install folder (it has changed once again to 3.0.40818.0) Ivan: Fixes package task for ironruby Fixes rake build for mono Updated to 0.9.1 tag Scripts to ensure compatibility with mono based distros Jim: tag string scanner spec added in legacy fixing More cleanup of legacy tests. Some specs have been moved to MSPEC, some have been deleted since they are covering duplicate areas as MSPEC. remove extraneous 1 file This makes one large method creating a large hash, but it saves duplication specs for properties and methods on structs and interfaces fixes dev.ps1. set-envvar is added which acts like cmd's set method. If you call it with no arguments, then it lists the contents of the $env provider, if you call it with an arg of x=foo, then it sets $env:x to foo. Specs for nullable parameters and properties Merge branch 'master' of git@github.com:ironruby/ironruby includes a insert-path cmdlet so that we do not rely on files on my computer Specs that regexp matching a multibyte string shouldn't throw an error. Also adds general -K specs. Jimmy: Fix IronRuby tutorial scrolling bug, and clean up TryRuby tutorial a bit Woops, forgot to actually disable the test in Silverlight Get IronRuby tutorial tests running in Silverlight again, and only show the console when running tests. IronRuby tutorial - allow "silverlight" method to be used in chapters as well. Cleanup IronRuby tutorial scripts Clean up Silverlight sample-scripts Cleans up LoadRootVisual and LoadComponent Remove files from Tutorial which should not be checked in DLR.createSilverlightObject should use DLR.settings, so user-defined defaults are used for all controls. Also various other commits from Jim and Jimmy that TFS wouldn't let me add ------------------------------------------------------------------------------- User: merllab Date: Sunday, October 25, 2009 11:26:39 PM Comment: (tomat) Fixes http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1483. ------------------------------------------------------------------------------- User: merllab Date: Sunday, October 25, 2009 9:55:54 PM Comment: (tomat) Fixes http://vstfdevdiv:8080/WorkItemTracking/WorkItem.aspx?artifactMoniker=797512. ------------------------------------------------------------------------------- User: jdeville Date: Thursday, October 22, 2009 4:48:46 PM Comment: Installer for IronRuby. After running rake package, if you run build c:\ironruby from this directory, you will get a IronRuby.msi file in the current directory. The installer has optional installation of: * Std Lib * Samples * Silverlight binaries * Addition of installation directory to %PATH% Enjoy ------------------------------------------------------------------------------- User: merllab Date: Wednesday, October 21, 2009 5:37:29 PM Comment: (sborde) Implements Thread.exclusive. Enables a minimal test for Shell which was blocked on Thread.exclusive ------------------------------------------------------------------------------- User: merllab Date: Sunday, October 18, 2009 9:22:55 PM Comment: (tomat) DLR: Fixes ScriptScope’s BindSetMember – it needs to convert the result expression to Object. Fixes http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2421 – if a CLR array is passed to params-array parameter it is not treated as a single parameter. Instead the overload resolver “splats“ it by default (implements C# semantics). This is not the right behavior for Ruby. I’ve added ExpandParams virtual method that allows the language to specify for a given MethodCandidate whether its params array/dictionary should always be expanded and thus never use the incoming array as the params array. Interpreter – implements TypeIs instruction (fixes http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2462). Ruby: Moves methods related to libraries from RubyModule to the library initializer. Fixes http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1849 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2243 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2171 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1989 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2146 ------------------------------------------------------------------------------- User: merllab Date: Sunday, October 18, 2009 8:01:56 PM Comment: (tomat) DLR: Fixes ErrorSink to throw SyntaxErrorException only if the severity is FatalError or Error (i.e. not for warnings). Ruby: Fixes bugs: http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2514 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2654 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1878 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1357 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2609 ------------------------------------------------------------------------------- User: merllab Date: Thursday, October 15, 2009 12:36:35 AM Comment: (sborde) Disables tests failing on Ivan's build machine ------------------------------------------------------------------------------- User: merllab Date: Wednesday, October 14, 2009 11:47:56 PM Comment: (tomat) Python, DLR: Fixes Dev10 build. Fixes bug http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=772 - new type builder doesn’t handle modops correctly. Ruby: Fixes bugs: http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=616 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2163 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=772 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2753 ------------------------------------------------------------------------------- User: jdeville Date: Wednesday, October 14, 2009 3:15:51 PM Comment: Makes irtests work correctly in modes without -p. It was hanging due to cmd /K ------------------------------------------------------------------------------- User: merllab Date: Monday, October 12, 2009 1:35:22 PM Comment: (tomat) Generalizes clr_member to support calls to an explicit implementation of an interface method as well as a base class method hidden by a “new slot” method. ------------------------------------------------------------------------------- User: merllab Date: Monday, October 12, 2009 12:36:39 PM Comment: (tomat) Fixes bug in class initializer call - initialize defined via define_method didn't work. ------------------------------------------------------------------------------- User: merllab Date: Friday, October 09, 2009 5:48:40 PM Comment: (tomat) DLR and Python changes: Adds an explicit Single -> BigInteger conversion (V4 BigInteger has this conversion). http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2191: Can't convert System::Single to BigInteger Ruby: Bugs: http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1651: Can't Assign to CLR fields with #send http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2189: System::Char values are incorrectly converted when used in a method with a System::Single argument Also fixes overload resolution conversion preference in cases: - Enum/Enum’s underlying int type -> prefer int unless the actual type exactly matches Enum - System::String/ System::Char -> prefer String. Removes a reference to a non-existent file from Ruby.Build.csproj. ------------------------------------------------------------------------------- User: merllab Date: Friday, October 09, 2009 1:38:57 PM Comment: (tomat) DLR (interpreter): Fixes interpreted stack underflow when interpreting void methods. Finishes implementation of IndexExpression. Implements a workaround for http://vstfdevdiv:8080/WorkItemTracking/WorkItem.aspx?artifactMoniker=796414. Delegate.CreateDelegate blows up if the target MethodInfo is an Array::Get/Set method. These methods are generated at runtime by type loader. DLR (Hosting API): Implements ObjectHandle overloads of (Try)ImplicitConvertTo. Fixes: http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2686 Ruby Disables default protocol for enums which partially fixes: http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2490 ------------------------------------------------------------------------------- User: merllab Date: Thursday, October 08, 2009 10:32:26 AM Comment: (tomat) Implements defined?(super) and fixes defined? applied on a method call to respect visibility. Fixes: http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1354 ------------------------------------------------------------------------------- User: merllab Date: Wednesday, October 07, 2009 5:34:23 PM Comment: (tomat) Reimplements RubyRegex so that it works correctly with 1.9-encoded strings, respects KCODE regex options and $KCODE variable. Fixes rindex used with Regex. Fixes how Kernel#inspect displays instance variables – MRI seems to not display them for classes not defined in Ruby except for Object. Fixes bugs in RubyBufferedStream.WriteBytes, MutableString.IndexOf, MutableString.LastIndexOf, Win32OLE so that it doesn’t report a syntax warning. Fixes .NET interop specs: Interop\net\method\fixtures\classes.rb Fixes: http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2027 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2190 http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1927 ------------------------------------------------------------------------------- User: merllab Date: Tuesday, October 06, 2009 1:51:22 PM Comment: (tomat) None ------------------------------------------------------------------------------- User: merllab Date: Monday, October 05, 2009 4:56:57 PM Comment: (dinov) None ------------------------------------------------------------------------------- User: merllab Date: Monday, October 05, 2009 12:52:55 PM Comment: (tomat) Fixes/implements serialization of arrays, strings, encodings and exceptions. Also includes fixes to istty and Win32API for Unix. ------------------------------------------------------------------------------- User: merllab Date: Wednesday, September 30, 2009 3:16:17 PM Comment: (tomat) Fixes issues with Kernel#`, system and exec. Paths with spaces and shell commands were not handled correctly. Also fixes a bug in mspec/lib/mspec/helpers/ruby_exe.rb – it didn’t handle spaces in RUBY_EXE path correctly. Implements Win32API library – irb depends on it if run on Windows and it “worked” only due to a bug in Kernel#`. Fixes IO#tty? – it only returns true if the console stream is not redirected to a file or a pipe. Adds some specs to test this. Disables Process::UID and Process::Sys specs on Windows. ------------------------------------------------------------------------------- User: merllab Date: Wednesday, September 30, 2009 11:40:13 AM Comment: (dinov) 24742 Can't delete default module docstring with 2.6 RC1 Module initialization should always assign __doc__ 24741 New module with 2.6 RC1 has docstring Same as 24742 24735 HAPI: PythonEngine does not release ScriptScopes in RC1 We need to hold onto a ScopeStorage objects via a WeakReference – not a strong reference as we do today. 24720 Unexpected site.py behavior - loaded from current dir DLR shouldn’t force a set of default paths on languages. IronPython should append current directory only after importing site. 24692 Removing a read-only dir should raise an error with errno set to EACCES When .NET throws an IOException we need to use Marshal.GetLastWin32Error() to get the correct error code for re-throwing 24690 errno.errorcode dict has keys and values inverted Need to un-invert the values 24691 os.path.abspath should handle invalid paths Need to deal with drive separators when handling invalid paths on Windows. 24636 Attempt to override __dict__ on a subclass of module (type(sys)) fails in IPy This is all kinds of broken. We need to lookup in the types MRO for user defined attributes in the custom __getattribute__/__setattr__/__delattr__ methods. We also need to make sure that we’re not defining __dict__ on a subclass whose base classes already have it defined (added a new test case not involving modules to test_class for this). Also: Adding ImplicitConvertTo to hosting APIs and updating LanguageContext to receive bool? Indicating explicit, implicit, or language defined. Fixing “pecified path” error message to include the S Removing GC.SuppressFinalize call from XRange iterator that isn’t needed Adding fast path for creating ints from bools Fixing stack overflow when accessing __doc__ - given ------------------------------------------------------------------------------- User: jdeville Date: Monday, September 28, 2009 10:34:44 AM Comment: makes rake compile's flags match up with msbuild ------------------------------------------------------------------------------- User: tomat Date: Monday, September 28, 2009 9:49:23 AM Comment: Fix in initializer generator. ------------------------------------------------------------------------------- ironruby-0.9.1.0 - 2009-09-28 ----------------------------- 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 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 to HashSet 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), which don't work if Expression 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 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 ------------------------------------------------------------------------------- ironruby-0.9.0.0 - 2009-07-30 ----------------------------- Date: Wednesday, July 29, 2009 4:56:49 PM (sborde) Tweaks IPy tutorial now that the MSI includes the Python standard library. I had changed Ruby’s dev.bat to not set HOME since ir.exe itself now sets it. However, HOME is needed by the rest of dev.bat to copy the .mspecrc file. So added that code back using the name HOME_FOR_MSPECRC. TypeLibs were not exposing aliased types. There are important enums that are declared as aliases. I noticed this when adding WIN32OLE support in IronRuby. Date: Wednesday, July 29, 2009 3:55:16 PM (tomat) (MiscConversions) DLR: Fixes ReflectionUtils.FormatTypeName so that it formats generic type definitions as C# does – using empty type names: C<,> instead of C. Ruby: 1) A Ruby class corresponding to a CLR generic type definition is now a super-class of all instantiations of that type. So for example, List<> is a super-class of List, List, etc. Similarly all instantiations of a generic interface include the module that corresponds to their generic interface definition. This allows to add methods to the generic definition and call them from any instantiation. For example, include System::Collections::Generic class List def foo p self.class end end List.of(Fixnum).new.foo # => System::Collections::Generic::List[Fixnum] List.of(String).new.foo # => System::Collections::Generic::List[String] 2) Implements TypeGroup#[] overload taking a Fixnum. This is useful when one needs to select a generic type definition out of a group of types. For example, given three classes C: public class C { public virtual int Arity { get { return 0; } } } public class C { public virtual int Arity { get { return 1; } } } public class C { public virtual int Arity { get { return 2; } } } p C[0] # => C p C[1] # => C[T] p C[2] # => C[T, S] Note that the resulting classes are not generic instantiations – they are still generic definitions and need to be instantiated. 3) Maps [] and []= on CLR arrays to Get/Set methods. This enables to apply Ruby conversions on array elements assignment. Changes CLR array factories so that they perform conversions of elements like so: class C def to_str; 'c'; end end System::Array[System::String].new(3, C.new) # => [‘c’, ‘c’, ‘c’] System::Array[String].new([C.new, C.new]) # => [“c”, “c”, “c”] System::Array[System::Byte].new(3) { |x| x + 1 } # => [1 (Byte), 2 (Byte), 3 (Byte)] Date: Wednesday, July 29, 2009 2:51:30 PM (tomat) Updates ToolsVersion of IronPython and IronRuby projects to 4.0. Date: Monday, July 27, 2009 6:59:09 PM (tomat) Adds IConvertibleMetaObject interfaces to DLR so that binders can query meta-objects on their convertibility to given types. Implements this interface for MetaPythonFunction. Adds DynamicMetaObject fromArg parameter to OverloadResolver.CanConvertFrom. This allows to check if the argument is convertible to certain types via IConvertibleMetaObject interface. Slightly improves overload resolution: Overload resolution first tries to convert arguments to parameter types on increasing narrowing levels. On each level only the overloads whose parameters are convertible from the actual arguments are further considered. Pairs of corresponding parameters are ordered based upon convertibility of their types to each other. If the parameter types are unordered (one cannot be converted to the other and vice versa) the resolution goes on and tries to choose the overload based on other traits of the methods (like generic parameters etc.). When comparing parameters the actual type of the argument is not considered. Therefore the following method call (in Python) is considered ambiguous. There is no ordering of the types of the first parameters (int and D types), which would prefer one or the other. Adds IConvertibleMetaObject interfaces to DLR so that binders can query meta-objects on their convertibility to given types. Implements this interface for MetaPythonFunction. Adds DynamicMetaObject fromArg parameter to OverloadResolver.CanConvertFrom. This allows to check if the argument is convertible to certain types via IConvertibleMetaObject interface. Date: Monday, July 27, 2009 12:10:11 PM (jdeville) Bug closing: YAML does not properly deserialize Time values overriding unsafe methods Better error message for running ir.exe on pre-.Net 2.0 SP1 rand doesn't work collectly Rubygems failures Adding a random object to Time which responds to to_f ArgumentError when calling System.String..ctor(Char[], int, int) Unverifiable code generated by mspec :lang -X:PrivateBinding does not enable referring to classes that have internal visibility Notes on these: * To get better error messages on pre-.NET 2.0sp1, I moved the error checking code from PythonConsoleHost up to ConsoleHost * As part of writing name_mangling specs, I created stubs for all of the IronRuby module. I'll start filling those specs out going forward. Date: Monday, July 27, 2009 12:05:25 AM (tomat) Disallows mangling of initialize method. Date: Sunday, July 26, 2009 10:44:47 PM (tomat) Makes to_s override to_string and ToString methods. Fixes bug: - If a CLR class has Initialize method its Ruby subclasses called it when instantiated. commit 74d580cebe5dc74dbf6ce67399159dfc8ce8686b Author: Shri Borde Date: Thu Jul 23 14:22:15 2009 -0700 Fixes HTTP.post_form (http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1353). Socket#write was not flushing the data, and so a later read could block since the endpoint would not send any response Date: Thursday, July 23, 2009 11:07:06 AM (tomat) Implements basic debug views for classes that implement IRubyObject. Date: Thursday, July 23, 2009 10:23:09 AM (tomat) The long term goal is to allow Scopes to be backed by arbitrary objects and implement GetVariable/SetVariable/… via dynamic GetMember/SetMember/… actions. This will also allow languages to cache lookups to the scopes. The first step is to move Python specific stuff off the Scope and LanguageContext. Breaking changes in Hosting API: - ScriptScope.GetVariable throws MissingMemberException if a variable is not found in the scope instead of a language specific exception (like Python’s UnboundNameException). - ScriptScope.GetVariable doesn’t return variables that are not contained in the scope itself. Previously it returned e.g. Python built-ins (like “dir”) if the scope was associated with Python. - ScriptScope.RemoveVariable doesn’t throw an exception if the member is not present. It returns false. Date: Wednesday, July 22, 2009 10:43:09 AM (tomat) Disallows interop calls to Ruby non-public methods. Date: Tuesday, July 21, 2009 9:49:14 AM (dinov) Moves CodeContext up into IronPython. Wherever we had CodeContext before or an Expression for flowing CodeContext it’s been replaced w/ a OverloadResolverFactory instead. There’s lots of now we flow full MetaObjects instead of just flowing Expressions through in the DLR binding (more cleanup could be done here in the future) Added IPythonMembersList which takes CodeContext, made IMembersList not take it. Removed some dead code related to old-style DLR binders Also fixing 20262 - quoting in MSBuild files codeplexcomment Date: Monday, July 20, 2009 5:32:44 PM (tomat) Replaces IronRuby.Tests.VS by ircoverage.bat that gathers the code coverage data for IronRuby.Tests.exe. Date: Monday, July 20, 2009 4:53:53 PM (tomat) DLR changes: Makes ReadOnlyDictionary and SynchronizedDistionary public. Ruby changes: Provides API for accessing DLR Scopes created by importing files of other DLR languages. IronRuby#require(path), load(path) - These have the same semantics as Kernel#require and Kernel#load except for they execute given script against a new Scope and it. If the target is an assembly they return the loaded assembly. IronRuby#loaded_scripts - Returns a dictionary that holds on loaded scripts and their Scopes. IronRuby#loaded_assemblies - Returns an array of assemblies loaded to the current runtime. IronRuby#globals - Returns the current ScriptRuntime.Globals scope. This allows to easily import e.g. IronPython files and work with the modules they define: a.py: Foo = 1 class Bar(object): def baz(self): print Foo b.rb: a = IronRuby.require('a') # a is an instance of Scope a.foo += 1 # get and set Python module variable a.bar.new.baz # instantiate Python class and call its instance method Also includes “mangling” shelveset. commit a24144a45743c5e6d8ec27532c6afceb6607cc62 Author: Daniele Alessandri Date: Sat Jul 18 18:09:39 2009 +0200 - Bignum related fixes: o Changed the signature for ClrBigInteger.ToString(self,radix), now Bignum#to_s works as expected raising an ArgumentException if base is less than 2 or higher than 36. o Fixed Bignum#divmod, Bignum#remainder, Bignum#% and Bignum#modulo to work with Float values as argument. o Fixed Bignum#/ and Bignum#div as they behave differently with each other when Float values are passed as argument. commit 7dfb0b3a82c4316380dcc8e18ca1067a2f03065e Author: Daniele Alessandri Date: Sat Jul 18 16:26:05 2009 +0200 - Array related fixes: o Array#== does not call #to_ary on its argument but it calls #to_a (it basically performs a conversion of the argument rather than casting it to a ruby array) o Array#zip calls #to_ary to cast the argument to an Array, therefore it overrides Enumerable#zip in which the argument is converted by calling #to_a. commit 30c16c3a3d079f6fddb0d35d3c76d6bb080ce3f2 Author: Daniele Alessandri Date: Fri Jul 17 21:29:24 2009 +0200 - More fixes for String#unpack: o Fixed errors when unpacking data with 'Z' and '@' directives o Implemented 'Q' and 'q' directives Date: Friday, July 17, 2009 12:11:49 PM (tomat) Removes IronRuby.Libraries.Scanner - it's not used. Adds ConsoleAny project as a copy of Ruby.Console except for that it produces assembly ir64.exe. Changes Ruby.Console to build with x86 platform flag so that ir.exe starts in a 32bit process on 64bit OS. commit 0522ad7bd4109660cff42e57b45e6bfc8759efbc Author: Shri Borde Date: Wed Jul 22 15:03:20 2009 -0700 Move check for task.should_run? up. Otherwise, an empty repl section would show at the top Make tutorial.bat work in a dev environment Disable a RubyGems test which was failing non-deterministically commit e488dec40234a5806ff19da7373beb67c64e7dfc Author: Jim Deville Date: Wed Jul 22 11:38:40 2009 -0700 syncing to head of tfs commit 421d9869c60d892b36ba324ce9cb8c89bdc77125 Author: Shri Borde Date: Tue Jul 21 21:59:43 2009 -0700 Moves setting of %HOME% from IronRuby.Libraries.dll to ir.exe. This is ruby.exe feature, not necessarily a language feature, and setting of environment variables should be something that the host controls. Moved the ExpandPath logic to RubyUtils, and also made it work with System.String instead of MutableString commit 0696a772f7f9708a15f18a5966125943cafb2010 Author: Shri Borde Date: Tue Jul 21 12:42:11 2009 -0700 Adds support for ENV['HOME'] by setting the HOME environment variable on startup. I have confirmed that MRI does actually set the process environment variable (and not just some value on a Ruby object) Modifies the algorithm to calculate the value to set for HOME so that it passes the new tests KernelOps.GetShell had to be modified to be able to span processes even after doing ENV.clear (like MRI) Removes logic to calculate HOME from dev.bat commit bdc0ac4002eb3a46e84a87cb1cc3fd203011cd2f Author: Jim Deville Date: Sun Jul 19 00:55:46 2009 -0700 added back ubygems.rb commit 6f32be3294cbd4a814066d08a30b51f4f6ea5c3a Author: Daniele Alessandri Date: Thu Jul 16 22:03:02 2009 +0200 - Implemented 'V' and 'v' directives for String#unpack. - Implemented 'B' and 'b' directives for String#unpack. - Cleared all the failing expectations in core/string related to an unthrown TypeError exception when calling in-place methods on frozen strings. commit 51563a0a4b54f3c2cddb29b8f989e1fc61e9db3b Author: Jimmy Schementi Date: Thu Jul 16 13:29:11 2009 -0700 Default to Segoe UI in Silverlight, so fonts look closer to desktop. Fix newline/whitespace in SL. commit 5b80e2140cd4185a18e1aadaaaf6d7e585699d26 Author: Shri Borde Date: Thu Jul 16 10:12:58 2009 -0700 More fixes to win32ole to get the ADO DBI driver working - Convert return values from DBNull to nil, from System::Decimal to String Also, removes support for indexed property syntax like excel.Workbooks[1]. Instead, like win32ole, you need to use excel.Worksheets(1) Added WIN32OLE#setproperty to set indexed properties like "worksheet.setproperty('Cells', i, j, value)" commit ffef26a418310ace70af782b0fd51d4900344da4 Author: Jimmy Schementi Date: Thu Jul 16 03:23:07 2009 -0700 first crack at the ironruby tutorial in Silverlight - design/TutorialSL ... needs to be merged with original - scripts for launching sl and wpf versions - refactor wpf_tutorial.rb into gui_tutorial.rb, and then wpf_tutorial.rb and sl_tutorial.rb launch in the respective technology - various tweaks to get SL working -- but doesn't have rich text yet - adds erb.rb and stringio.rb to Libs so SL can get them. - Tweak Chiron so it won't copy to test dir if not present - Tweak to RubyEncoding to utf-8 works in SL - Make sure console is loaded after the ScriptEngine - Make BrowserVirtualFilesytem.NormalizePath virtual so children can override it commit de4dd18760df2d4f3f41b326449fcf605ab1bde3 Author: Jimmy Schementi Date: Thu Jul 16 01:18:43 2009 -0700 Build Silverlight.sln aliases (bsd/bsr), get Chiron building, and remove JS/TestConsoleHost from Silverlight.sln Date: Wednesday, July 15, 2009 10:18:44 PM (jdeville) Files related to the git automation and getting rake compile working again. Date: Wednesday, July 15, 2009 4:15:48 PM (tomat) Virtual methods that have been detached from the CLR type and redefined on the corresponding Ruby class or its subclass should not directly invoked from a dynamic virtual call since that leads to an infinite recursion. Example: class C < ArrayList define_method(:Add, instance_method(:Add)) end C.new.Add(1) C.new.Add dispatches to the virtual ArrayList::Add, which in turn dispatches to the auto-generated override C$1::Add. If we called the resolved method directly from the dynamic virtual call rule it would invoke the C$1::Add override again leading to a stack overflow. So we need to use a base call instead. Date: Wednesday, July 15, 2009 1:59:58 PM (tomat) DLR: Adds a simple random number generator for BigIntegers. Ruby: Implements Kernel#rand, Kernel#srand. Improves scope allocation perf. Date: Monday, July 13, 2009 5:10:48 PM (tomat) DLR: Implements interpretation of coalescing expression. Ruby: Reuses delegates created for blocks. BlockDispatcher is baked into the lambda as a runtime constant with initially uninitialized target delegate. This delegate is initialized first time the block is defined and then reused next time. This makes nested block loops much faster as it avoids unnecessary calls to DynamicMethod.CreateDelegate. Uses MutableTuple for local variable storage instead of StrongBox[]. Fixes a bug in state variable allocation for flip-flop operator. commit 427cd3038a649103e18abacf78c0a83d467a19ac Author: Shri Borde Date: Sat Jul 11 23:26:12 2009 -0700 Add hosting of IronPython to hosting tutorial Date: Friday, July 10, 2009 2:32:46 PM (tomat) DLR: - Renames CollectionUtils.Sort to ToSortedList to avoid collisions with Sort methods on classes implementing ICollection. - Adds helper that converts delegate Comparion to IComparable. Ruby: Improves implementation of RubyArray. So for example a loop doing Array#shift is not shifting the entire array content left every iteration. Also adds MsTest.cs stub to IronRuby.Tests so that we can easily get code coverage numbers for unit tests in VS. This depends on Microsoft.VisualStudio.QualityTools.UnitTestFramework assembly that is not available on Mono so our rake build removes this file from build. Date: Friday, July 10, 2009 2:14:49 AM (jomes) Improves the ExpressionVisitor API (720267): - Expression.Accept is protected. - Expression.VisitChildren takes an ExpressionVisitor. - ExpressionVisitor helpers are public: o Visit(ReadOnlyCollection) o Visit(ReadOnlyCollection, Func) o VisitAndConvert(T, string) o VisitAndConvert(ReadOnlyCollection, string) - All nodes with children have an Update method that replaces the children o Returns the same node if none of the children changed o Most Update methods are tested already by the visitor o Added tests for those that were not: Block, Dynamic, Invocation, MethodCall, Index commit 5fb483dd13b8c0c950627e9624973e4fa60cf784 Author: Shri Borde Date: Thu Jul 9 22:01:29 2009 -0700 Converts COM interop tests to using win32ole. Hardly any changes were required! The only change required is that win32ole requires using parenthesis to access indexed properties, but the tests used square brackets. For now, I have added support to win32ole for square brackets instead of modifying the tests. Also, WIN32OLE_EVENT does not seem to have any way of unsubscribing from an event. adodb_spec has a weird failure only with non-managled names, and so I have left it using Type.GetTypeFromProgID for now commit 7e0f79ec26bb9ba0e9f5066552bc85fbba2dabbb Author: Shri Borde Date: Thu Jul 9 10:18:15 2009 -0700 Basic implementation of win32ole, building on top of IronRuby’s COM interop support. Simple samples work reasonably work. Features that work are: * Object instantiation with WIN32OLE.new * Calling methods, accessing properties * Converting Ruby type arguments (ie. String, Array, etc) to System.String, System.Array, etc * Enumeration via WIN32OLE#each * Accessing enum values from the type library via WIN32OLE.const_load Events (WIN32OLE_EVENT) are not supported since IronRuby does not support COM events yet. Also, this TODO from win32ole.rb : # TODO - Instead of wrapping the RCWs (runtime-callable-wrapper), we should just # return them directly (and make WIN32OLE an alias for System.__ComObject). We currently # wrap them so that we can cheaply customize the behavior of the resulting object # (for eg, to convert the arguments). # However, all the customizations should be moved into the IronRuby runtime # itself and made to work directly against RCWs. This will allow better cross-language # inteorp of passing RCW arguments, better perf since it will avail of call-site # caching, and object identity. Date: Wednesday, July 08, 2009 8:39:37 PM (jomes) Change ComBinder class to internal (723713). Date: Monday, July 06, 2009 5:30:52 PM (tomat) Perf improvements of misc String operations: - MutableString no longer tracks its version. It was only used to detect changes made to the string. The same is possible by checking for “HasChanged” flag which is set by every mutating operation. - Reimplements “tr”, “tr!”, “tr_s”, “tr_s!”. The new implementation is almost 12x faster. - Reimplements “join” to achieve better perf. Improves handling of KCoding – combination of two strings k-coded by a different encoding doesn’t result to an error but to a binary encoded string. The string loses its encoded appearance and it behaves like raw binary data to .NET programs. commit 09059350eb4d3f281a7e54e85ddecfd4932754a3 Author: Shri Borde Date: Thu Jul 2 12:54:04 2009 -0700 Implement StringIO#ungetc which is used in ActiveSupport Changes irtests.rb to print total time in minutes. A full run takes 45 mins on my machine, which is faster than before even though we have added Rake tests! Undo my change to paths in RakeTests.rb Date: Wednesday, July 01, 2009 4:07:04 PM (tomat) Replaces DLR closures by a Ruby specific implementation. This will allow us to overcome DynamicMethod limitations (ldftn doesn’t work for dynamic methods) and reduce closure creation time. We can also optimize the closures more than DLR does right now. commit 226ceebdd8e64fc86042e626b9de1e96b4226029 Author: Shri Borde Date: Fri Jun 26 14:25:04 2009 -0700 Module#autoload call should be ignored if the constant is defined. Without this, a class definition was being lost if autoload was called after the class definition was executed (timeObj == "string") should return nil. It was throwing TypeError because method overload resolution was finding System.DateTime.op_Equality. Throwing a TypeError is ok for .NET types with strongly typed op_Equality, but not for those types that represent Ruby types. Fix typo in multi-line regex in YAML engine causing incorrect parsing of Time yaml strings ironruby-0.6.0.0 - 2009-07-01 ----------------------------- 30-6 (sborde) Added Hosting tutorial Conditional execution of a task with :run_unless, typically to ensure prerequite commands are executed 26-06 (jdeville) Regression tests to close Codeplex bugs: Access is allowed to internal fields from File.expand_path does not support a line number after filename from alias_method fails for :do from Proc.to_s should include line number where the block was declared from WinForms broken from $? is not always Process::Status from load_assembly() should work from System.Action.new does not work from Cannot call CLR constructor of builtin type from public(:foo) does not work correctly for mixed-in methods from Cannot call new on subtypes of builtin classes whose "new" method has optional arguments from visibility of send :define_method from Passing a Ruby array to a .NET method that expects an IEnumerable derivative fails with GetEnumerator call from Assert in SetMethodBasesNoLock when calling #== on Ruby class inheriting from CLR class which overrides Equals from Wrong behavior when calling redefined methods on object instances from Can't call the BigIntegerOverload of a method with a DefaultProtocol Attrib 25-06 (tomat) Replaces custom block delegates with Func delegates. 24-06 (tomat) Implements FileTest and fixes race condition in a Rake test. 23-06 (tomat) Improves implementation of RubyArray. 22-06 (jimmysch) Fix ironruby_tutorial.rb where "require 'wpf.rb'" wasn't seen as a success on the first attempt. The first execution results in "true" while the next results in "false", and one attempt executed the code twice. The fix is a bit hacky, but will suit unless we can handle detecting "require" better. 22-06 (tomat) Disables adaptive compilation of Ruby sites in -X:NoAdaptiveCompilation is set. 22-06 (jimmysch) IronRuby Tutorial polish: - Starting a tutorial jumps directly to the first task, but shows section and chapter introductions above it (if they exist). - FrameworkElement#set_or_collapse didn't show the element - select_tree_view_item should only be used if the TreeView was constructed with code - "Move to next chapter" button is auto-focused - Always scroll to the bottom on any repl activity - Increase default window size to 640x700 - Header now has a bottom shadow instead of a border, to make scrolling text look cleaner. - Section/Chapter navigation now fills vertical space, and is a 100px wider. - No more tutorial introduction animation; it always shows on the first page. 20-06 (tomat) Fixes implementation of Kernel#eql?, Kernel#==, Kernel#hash, Array#eql? and Array#hash and improves CLR interop. Improves performance of Array#- from quadratic algorithm to linear. CLR interop: “hash” is mapped to “GetHashCode” and following below rules: 1) A Ruby call to Kernel#hash on a CLR object that overrides GetHashCode will call that override. 2) A Ruby call to Kernel#hash on a Ruby subclass of a CLR type will call the GetHashCode of the CLR type if the Ruby subclass doesn’t implement “hash” method. 3) A Ruby data structure (like Array) that calculates its hash code based on hash codes of its items dynamically calls “hash” on those items. 4) Any call from C# to GetHashCode on an instance of any Ruby class will dynamically dispatch to either “hash”, “GetHashCode” or “get_hash_code” whichever is found first in standard method resolution order. If multiple of these methods are defined in the same class “hash” has highest priority and “get_hash_code” the lowest. This implies that a Ruby method definition with name “hash”, “GetHashCode” or “get_hash_code” in any Ruby class overrides GetHashCode of the parent CLR class. Similarly is “eql?” mapped to “Equals”. Kernel#== is an alias for “eql?” and hence has the same behavior when invoked. However, 4) doesn’t hold for “==”, i.e. method == defined in a Ruby class does NOT override CLR Equals method. Adds /noadaptive option to unit test driver. Fixes removal of CLR methods. Simplifies implementation of IsRemovable on RubyMemberInfo using IsRubyMethod. IsRubyMethod returns true on all members that were defined by Ruby means, be it explicit method definition (def keyword), alias, alias_method, define_method, public/private/protected, overload, of, etc. CLR members used for definition of a new method (via define_method, alias etc.) are called “detached” (as opposed to “attached” CLR members, which represent the original CLR members). They behave like any Ruby method with respect to method removal. 19-06 (sborde) Alt-Enter fix for tutorial Add support for multi-line input 18-06 (tomat) DLR: Fixes bugs and implements new features in interpreter. - Static field assignment. - LessThan - ConvertUnary – should re-box numeric values. - Force compilation whenever ref/out parameters are encountered. - Invocation expression with delegate target. - Unbox – no-op. - TypeEqual and TypeIs for sealed types. Ruby: - Implements adaptively compiled rules: - RubyMetaBinder (subclass of all Ruby binders) implements BindDelegate so that: o It creates AST for the rule calling Bind and wraps the result into a lambda exactly like call site binder does. o If this lambda is interpretable (doesn’t contain loops or other constructs that force compilation) it creates an InterpretedDispatcher that hooks the lambda’s “Compiled” event so that it gets called back as soon as compiled delegate is available. Until that happens it dispatches rule invocations to the interpreter. o If the lambda is forced-compiled it uses the resulting delegate right away. o The dispatcher is a generic class generated for Func and Action delegates with 0..15 generic parameters. - Also Adds specs for “include?” used on ClrNames. Adds missing type test to singleton rules. 17-06 (sborde) Adds WPF content to ironruby_tutorial Improves the testing 17-06 (dinov) Ruby’s MethodGroupInfo was doing MakeGenericMethod and then returning the generic method.But the types it’s passing in are all generic parameters – so the end result is Ruby produces a method for which .IsGenericMethodDefinition is false but it contains all of the original generic method parameters. Now we return the original target so IsGenericMethodDefinition remains true. Also updated MissingBlockArgBuilder so we can know that it doesn’t really prodive any parameters. Finally the small set of tests verifying exceptions are throw are updated to expect successful inference. 16-06 (sborde) Fix non-deterministic Rake test for "multitask" by adding semaphore.synchronize around array access Changed default.mspec so that :core properly excludes the thread tests Abstracts RubyUtils.FileSystemUsesDriveLetters File.expand_path("c:/a..") should return "c:/a" Fix Ruby snippet in DlrInteropTests.cs Change system_spec to redirect output of a child process so that it does not clutter the output 16-06 (jdeville) adds a root directory rake file so rake commands can be run anywhere in the git repo removed old test tasks. All tests should be run via new tasks that will be coming in, or via the mspec command line now rewrite irtest.bat to use Ruby instead of Batch making changes suggested by Ivan to allow compilation on Mono to work again. refactor irtests into a ruby script hook up test tasks, change default to run tests, make git:commit run tests, namespace compilation, fix IronRuby.Test.exe Most of IronPython now compiles with rake compile. We are only missing IronPythonTest.dll, which may be ok Adding more interop tests for delegate creation and invocation. Also adds IronPython compilation to rake git:commit Make legacy tests work from rake split apps into two component tasks for granularity add test to ensure that basic IronRuby works without ir.exe.config move the no-config tests to mspec under interop\cli, -X tests will go here eventually code review fixes from Shri more .net interop tests to get rid of test_basic get rid of test_basic.rb 16-06 (jimmysch) Auto-hide chapter/section navigation Main screen with list of tutorials Use test/spec Totally change around wpf_tutorial.rb -- not perfect yet but it's a start Move general wpf helpers into wpf.rb Fix repl history margin Fix reloading 16-06 (tomat) Renames Method, UnboundMethod#overloads (plural) to Method, UnboundMethod#overload (singular). The old name is still available for now and throws an exception. Implements ClrName#==. Groups CLR unit tests into regions. 13-06 (tomat) Fixes bug in calls to base virtual methods. 12-06 (tomat) Fixes bug in CLR method lookup failure caching. Implements pre-compilation for rules of methods calls with a block targeting Ruby methods. 11-06 (tomat) Fixes bug http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1506: -X:PrivateBinding does not enable referring to classes that have internal visibility 11-06 (tomat) Fixes http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1502: alias_method fails for :do. 11-06 (tomat) Implements CLR member enumeration: methods Module#instance_methods, etc. now include CLR member names. Adds IronRuby::Clr::Name class, which represents a pair of names of a CLR method – the primary name is mangled (Ruby name) the alternative name is the actual CLR name. Reflection methods like Module#instance_methods return instances of ClrName whenever a CLR member is encountered that could be called by both names. ClrName has methods to_s, to_sym, to_str, <=>, inspect, dump so that it can be used wherever a string can be used. The display string for the name uses single quotes so that you can easily distinguish CLR (dual) names from regular names (plain mutable strings). >>> System::Byte.instance_methods(false) => ["-", "%", "&", "*", "**", "/", "-@", "[]", "^", "|", "~", "+", "<", "<<", "<=", "<=>", "==", ">", ">=", ">>", "abs", "div", "divmod", "modulo", "quo", "to_f", "to_s", "zero?", "size", 'compare_to', 'equals', 'get_hash_code', 'to_string' , 'get_type_code'] >>> l = System::Byte.instance_methods(false).last => 'get_type_code' >>> l.ruby_name => "get_type_code" >>> l.clr_name => "GetTypeCode" Now this works with meta-programming as well: class System::Decimal instance_methods(false).each do |name| mangled = '__' + name alias_method(mangled, name) private mangled define_method(name) do |*args| puts "method called: #{name}" send mangled, *args end end end x, y = System::Decimal.new(1), System::Decimal.new(2) p x + y # => “method called: +” p x.CompareTo(y) # => “method called: compare_to” The trick here is in new set of define_method overloads strongly typed to ClrName that define the real method using the ruby_name and alias it using the clr_name. So both CompareTo and compare_to calls are intercepted. We might add similar overloads to other methods to improve meta-programming experience for CLR types when needed. 10-06 (tomat) Improves the implementation of singleton method dispatch. 1) The previous singleton related shelveset made IRubyObject singleton methods as fast to call as regular methods. Since singletons of Object are frequently used in specs, in fact any top level method calls are dispatched to a Object singleton, it makes sense to optimize singletons of Object as well. So far we mapped Object to System::Object and Object.new produced an instance of System::Object. Since such instances are pretty useless in .NET – they are essentially empty objects that you can’t do anything with - it is not necessary to preserve this exact mapping. We still map the Object class to System::Object CLR type, but the underlying CLR type of Object instances is RubyObject. In pure Ruby program the difference is not observable. On the other hand C# programs will see the instances typed to RubyObject. 2) Fixes http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=761: Wrong behavior when calling redefined methods on object instances. This is actually fixed by 1) but the same issue applies on CLR singletons. Let’s say we have a CLR class C. Once you create a singleton of any of its instance all rules generated for method calls whose receiver is *any* instance of C must check whether the receiver is a singleton object of C or a regular instance of C. Previously we did this check only for calls to singleton methods. This check is a pretty expensive weak dictionary lookup. One way of optimizing this is to reduce the need of these checks. If we are sure that no singleton method of the given name has been defined on any singleton of C we don’t need to emit this check to the rule. Of course, we need to invalidate such rule as soon as such method is defined. 3) Fixes potential race conditions in singleton creation. These changes improve running time of specs significantly (2x): 10-06 (tomat) Fixes allocation of structs. A struct can always be allocated by calling new or allocate with no parameters or calling its constructor if available. 07-06 (tomat) Initial work to improve singletons. • Improves reflection cache generator – it searches IronRuby.dll for all types marked by [ReflectionCache] attribute and generates ref-cache entries for all their methods and properties marked with [Emitted] attribute. • Merges RubyModule.Subclass into RubyModule, i.e. RubyModule now implements IRubyObject. • IRubyObjects now hold on their immediate class (not nominal class) and that reference might change once from a non-singleton to a singleton class. This change allows IRubyObject singletons (including modules and classes when used in static method calls) to have the same rules as non-singleton objects. The rule no longer needs to hold on such objects. • Implements module freezing: methods, constants, instance and class variables, mixins cannot be modified on a frozen module. Besides, if an object is frozen its singleton class is (recursively) frozen as well. • Fixes object freezing: instance variables cannot be modified on a frozen object (we allowed it). 06-06 (tomat) Fixes Ruby calls to protected generic methods. 05-06 (tomat) Implements lazy method transformation. Previously a method was transformed to DLR AST as soon as it was defined (def foo; …; end). We can postpone the transformation until the method is called for the first time. This significantly improves startup time. For example (not NGEN’d): require 'benchmark' Benchmark.bm { |x| x.report { require 'rubygems' } } user system total real eager transformation 1.622410 0.031200 1.653611 ( 1.581316) lazy transformation 1.170008 0.031200 1.201208 ( 1.099220) Although Ruby methods (unlike block) don’t close over variables we still need 2 closure variables: the parent lexical runtime scope and the module that the method is declared in (for implementation of super). These were previously DLR closure variables. They are live constants now. Ruby method pre-compilation would require additional work, so we don’t support it for now. 04-06 (tomat) http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1509&ProjectName=ironruby: Proc.to_s should include line number where the block was declared 03-06 (sborde) Reimplemented File.expand_path such that it does not use System.IO.Path. This allows us to get better compatibility with MRI. The motivating reason was that RSpec does File.expand_path("filename:linenumber"), and the old implementation complained that : is not valid in filenames, whereas MRI allows such input Fixed "[nil].uniq" - Cucumber was running into this. Renamed scripts\ruby19.bat to ruby1.9.bat as "mspec -tr19" seems to have changed. Fix non-deterministic Rake test for "multitask" by adding semaphore.synchronize around array access Changed default.mspec so that :core properly excludes the thread tests 03-06 (jomes) Make Expression.Type and Expression.NodeType virtual properties, and remove TypeImpl & NodeTypeImpl. This fixes 4 fxcop warnings caused by the *Impl methods, and results in a better API for end users. 02-06 (tomat) Refactors AstGenerator so that we can use its new instance for each compiled method. This is a preparation for lazy method compilation. http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1184: public(:foo) does not work correctly for mixed-in methods http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1060: visibility of send :define_method Title is required Factors super-forwarders into a separate SuperForwarderInfo <: RubyMemberInfo (it used to be just a flag on member info). The super-forwarder needs to remember the name of the method to forward to since that can change if it’s aliased (see Visibility2C test case). Fixes assertion in RubyOverloadResolver - it wasn't expecting DynamicMethod stubs generated by super calls. Also fixes the super stubs to throw an exception if the super method is abstract. http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1345: load_assembly() should work http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1501: WinForms broken http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1344: System.Action.new does not work http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=917: Passing a Ruby array to a .NET method that expects an IEnumerable derivative fails with GetEnumerator call + fixes incorrect caching of TypeGroup#new. Class#clr_member no longer throws an exception if called on Ruby class – it returns a group of all inherited CLR methods of given name (if there are any). Improves display name of generic types: e.g. Action displays as System::Action[Fixnum]. http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1470 : Can't call the BigIntegerOverload of a method with a DefaultProtocol Attribute on the BigInteger attribute + Bignum.new(1) should call method_missing: irb(main):001:0> Bignum.new(1) NoMethodError: undefined method `new' for Bignum:Class 01-06 (jimmysch) Allow Silverlight binary location to be adjusted based on a msbuild variable. Merlin builds use the well-known SL path in the source tree by default. A "SilverlightPath" msbuild variable can be passed to look for the SL binaries there. For IronRuby and IronPython external SL builds either the "SilverlightPath" variable can be set to Silverlight's install location, or the necessary Silverlight binaries can be copied to Merlin/Main/Utilities/Silverlight. Also scoots around aliases to Silverlight directories. 01-06 (jdeville) * Added and modified tests to increase code coverage * Rolls in cominteropfix shelveset to make the cominterop generic test actually run COM interop tests * Moves Rubygems tests to External\Languages\IronRuby\RubyGems-1_3_1-test * Removes Rubygems 1.2 tests * Fixes Rubygems test runner for the above. * makes irtests run the core tests split up, adds cominterop * splits out thread tests into a separate test list * makes ir.cmd use TEST_OPTIONS 31-5 (tomat) ClrMembers 29-5 (tomat) Overrides4 28-5 (jdeville) * Remove temp.rb from IRPowershell, it was only needed to test the script during development. * Port minsysreq and minsysreq_ps. Next step will be to generalize them to some different apps. 26-5 (tomat) Fixes handling of CLR protected and private methods and properties. Enables generic methods in ClsTypeEmitter. Removes RubyCallFlag.TryCall – it’s not used anymore. Fixes calls to Object.Equals instance/static methods. Notes on visibility: Ruby visibility is orthogonal to CLR visibility. Ruby visibility is mutable (can be changed using Kernel#public/private/protected methods), CLR visibility is not. A CLR method group can comprise of methods of different CLR visibility. Ruby visibility applies on the group as a whole. Ruby-protected members can only be called from a scope whose self immediate class is a descendant of the method owner. CLR-protected members can only be called if the receiver is a descendant of the method owner. Ruby-private members can only be called with an implicit receiver (self). CLR-private members can only be called in PrivateBinding mode (-X:PrivateBinding command line option), the receiver might be explicit or implicit. Tests: Since protected methods can only be called on a derived class instance the specs need to be adjusted accordingly. I’ve fixed generic_spec nad overload_spec and commented out a block in protected_spec – all the cases there need to be changed to negative cases (all should fail). Removed ROWAN_BIN check in External.LCA_RESTRICTED\Languages\IronRuby\mspec\default.mspec so that mspec picks up IR_OPTIONS even if ROWAN_BIN is not set. 22-05 (jdevillle) (jdeville) Regressions tests for the following CP bugs. !!!!!Note that closing 1351 means we are upgrading redist-libs and rubygems!!!!: ID Title 374 irails Foo: undefined method for OpenSLL::Random.random_bytes 459 throw FileNotFoundException => rescue Errno.NoEntryError 466 ''.split(//, -1) returns [""] instead of [] 572 Error when running Cucumber examples with IronRuby 614 ci_files set needed in mspec config 718 IronRuby ignores RUBYLIB environment variable 727 to_proc not working 814 Allocator underfined for (TypeError) 940 Can't inherit from abstract classes 1028 Missing conversion from Duration to Fixnum (ActiveSupport)? 1351 redist-libs should have rubygems-1.3.1 1352 Test Defects Also: * Categorizes uncategorized specs * includes a TraceListener in default.mspec. 21-05 (tomat) Improves DLR interop: adds support for GetMember/SetMember with method_missing, Binary/Unary ops, indexers. Fixes bugs in DLR interop. ironruby-0.5.0.0 - 2009-05-19 ----------------------------- 18-05 (jdeville) From Jirapong: * Fixed OpenSSL::Random.random_bypes and OpenSSL::Random.pseudo_bytes (via cherry-pick from Jimmy's repro) From Shri: * "ir.exe -Ifoo" should work. We were requiring "-I foo". Removed critical tags in io\close that I noticed were working. Miscellaneous new tests in File.basename Our copy of unit\testcase.rb uses SubclassTracker which is defined in "hacks" and so should require "hacks" * Map #== and #hash to System.Object.Equals/GetHashCode * With the memcache-client gem installed, the Rails tests fail to startup as memcache does TCPSocket.new(addr, port, 0) and we were not handling the third argument * "numeric + someOtherObj" should call someOtherObj.method_missing(:coerce) backtraces now include file names for builtin methods in IronRuby.Libraries.dll in a DEBUG builds and with -X:ExceptionDetail * Enables RubyGems tests in irtests.bat * Add mocha gem * Implement File.chown. It is a nop (on Windows) * ObjectSpace.each_byte: It was not throwing an exception for the unsupported cases. Also, the unsupported cases should throw RuntimeError to match ActiveSupport/JRuby conventions The return value was also incorrect * NameError should call #inspect on self, not #to_s * #instance_method on singleton classes behaves a bit differently - it puts a contraint of the nominal type. * UnboundMethod#bind was doing an incorrect type check and not dealing with singleton classes. Factored out RubyContext.IsKindOf for this * Add flexmock gem * Changed some uses of MutableString.Empty (like Array#join with empty array) to create a new empty string as the user could validly mutate it. - Renamed MutableString.Empty to MutableString.FixedEmpty to make it clear that the instance should be shared in limited scenarios * Fixes to Module#instance_method per Tomas's feedback from previous code review * File.extname(".foo") should return "", not ".foo" * Removes to_proc hack from Libs\hacks.rb * Tutorial sample app From Shay: * Fixing a File.print misbehavior when the global separator is not the default. From Jimmy: * IronRack - Run Rack applications (Sinatra, Rails, etc) on IIS (cherry picked from commit aba053caa5f5e10c9da360fd4f2d442406f59079) * Load app by APP_ROOT and config.ru (cherry picked from commit 3da7be50ee63e1fe3a437f95f9ab2220784f9141) * Add "RackVersion" to web.config. (cherry picked from commit 087ad7290217e18b41171e24866bf10c54d6ec0c) * Add README (cherry picked from commit 54edd25b3837a36714c67c5c44653b1b07bdb9f5) * Load a version of Rack denoted by RACK_VERSION (cherry picked from commit 85d98e68a6bb375820370cd8b724311e8ed2304e) * Make readme .markdown (cherry picked from commit 9f8c37e4d4935f51460501ec1526b350d6137397) * Spring cleaning (aka merging Justin Rudd's version) (cherry picked from commit 69916ceb04a3f8ecad570fb89549da7ef56d0a6c) * IIS.Handle(request, response) now it pretty close to compliant with the Rack spec. Added an Request/Response class, so most of the munging around in IIS.Handle will be moved to those in the future. (cherry picked from commit 025dc983062ae5d5c4d008532c94a5be9dcf925b) * Adds irackup and fixes irake (Method#to_proc hack) * Server name and server port (cherry picked from commit d1257882642b06c0c71d05275d1ae5f84739ed23) * Remove repl.rb from project ... (cherry picked from commit dac7df55ce0217a77dc7f1c92c5b37b6dd0e14f7) * rack.uri_scheme (cherry picked from commit aeebcb0ec8247684a62e0a023a94fb3bb23e49b6) * update sintra test (cherry picked from commit 078aaaddd0c5468173ff1880b1c80091bb22dd80) * Make sure the "env" has MutableString keys, and that Rackup() always return a Rack app (cherry picked from commit fe3517edb7fdecf6d5ecefd2f87d27d484ebc9f6) * Set TOPLEVEL_BINDING if not already set * Better logging * Fix env vars for Sinatra (and completeness) * TCPSocket#read patch for POST requests in WEBrick (cherry picked from commit 77a060722592b26bb6fc91d47ceddf9ed90c775e) * cleanup of ironruby-rack from railsconf * Move to Merlin/Main/Hosts/IronRuby.Rack * Log KCODE * fix KCODE error message * Add ngen install/uninstall scripts (cherry picked from commit e9d15d93082e8ac8d32ce2a51939c32f8c0cfb03) * require 'System.Windows.Forms' (cherry picked from commit 92932a672921a03210c8aefe23ac0a7d6996ed2d) 18-05 (jdeville) Initial COM interop tests for IronRuby. These are just a port of IronPython's "app" interop tests. This also changes IronRuby to version 0.5 Ported IronPython's DiskUse sample to IronRuby 13-05 (tomat) Adds support from nested types to Ruby – they are exposed as constants on the declaring type. Also implements removal of namespace member and nested type constants. Fixes a bug in autoload – the constant being loaded was removed on a wrong module. Improves displaying of generic types and type groups: RubyContext.GetClassName returns a name of the class without generic parameters or runtime id. RubyContext.GetClassDisplayName includes both (runtime id only for classes from foreign runtime). The latter is used for displaying errors and for object inspection. 12-05 (tomat) Fixes class instantiation, including bug http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1085. Several cases need to be distinguished in Class#new: 1) The class defines or inherits an initializer (“initialize” method) that is not the default Object#initializer. a. The initializer is a Ruby method (written in Ruby). => Use a default constructor to create the instance and invoke the initializer on it. If the class derives from CLR class with no default constructor an exception is thrown. b. The initializer is defined in a built-in class/module. i. The class being instantiated is a Ruby class. Use default constructor and invoke the initializer. ii. The class is a CLR class. Use constructor or factory. Do not call the initializer built-ins must initialize the object completely in constructors/factories and provide initializers only for a direct call. 2) Otherwise. => Use constructor or factory. Do not call the initializer. If the first parameter of a CLR constructor is of type RubyClass it is considered optional and hidden (like RubyContext or RubyScope) and the binder passes the class object that represents the class being instantiated. Adds support for RubyContext hidden parameter to the constructor generator in RubyTypeBuilder. The first RubyContext or RubyClass parameter is considered a special hidden parameter. The built type needs to store RubyClass instance to _class field. If the base constructor already has RubyClass the derived ctor has the same signature. If the base constructor takes RubyContext the derived ctor takes RubyClass in its place and passes its context to the base ctor. If the base ctor doesn’t have RubyClass or RubyContext parameter RubyClass parameter is injected. We also need to ensure that we don’t create duplicate constructors (e.g. if there is a parameter-less overload, an overload taking RubyContext and an overload taking RubyClass). Fixes Ruby.sln so that System.Dynamic is not built in Silverlight configurations. 07-05 (tomat) Implements IsAscii() on MutableString – the bit is calculated along with hashcode and invalidated each time a mutable operation is performed. Enables combination of mutable strings with different encodings/KCoding. If a string is k-coded it should be treated as byte array for all operations since 1.8 doesn’t tag the strings with encodings. Hence any k-coded strings can be combined regardless of their actual encodings. 1.9-encoded strings must have the same encoding or one of them must have all characters in range 0..127 (IsAscii == true) – MRI 1.9 allows combination of such strings. Fixes: - “IronRuby ignores RUBYLIB environment variable” http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=718 - Encoding wasn’t flowing correctly in eval (test Encoding4) - Improves performance of String#*. - MutableString.Content.GetCapacity was wrong. 06-05 (tomat) Improves performance for file IO#read method. Previously we were 10x slower than MRI, now we are approx. 1.5-times faster 05-05 (tomat) Implements Method#to_proc. Implements precompilation of simple Ruby method invocations. Adds pre-generated rules for call sites that are: 1) context bound 2) without a block, splat or RHS argument 3) with self of runtime type RubyObject strongly typed to Object in the call site 4) the method is resolved to an existing Ruby method or an “empty” library method 5) no context class checks are needed due to protected visibility 6) the method doesn’t have optional or unsplatted parameters and the number of mandatory parameters matches the call site 7) the method has at most 5 parameters The rules are generated to MethodDispatcher.Generated.cs by MethodDispatcher.Generator.rb. The generator finds blocks in C# code that match this pattern: #if GENERATOR #else #end #region Generated by … #endregion It creates a new class G < Generator for each such block end module-eval’s in that class. Then it calls G.new.generate. The default implementation takes the and replaces each occurrence of /*$MethodName*/ or /*$MethodName{*/ … /*}*/ in the template by a value returned by a call to MethodName on the generator class. The generator replaces the content of “Generated by” region by the resulting code. The is optional – the #else block can be omitted. There could be multiple templates in a single file. The generator also searches the file for /*$$*/ comments before evaluating them. Text in between such comment and following semicolon is evaluated as a Ruby global variable definition. The shelveset also moves event sites (method added/removed/undefined, …) to RubyModule and RubyClass so that they don’t become megamorphic. Encapsulates class version into VersionHandle class. Changes perf stats output writer to a file 'perfstats.log'. Enables remaining Method specs. Fixes a couple of failures due to wrong arity calculation. 03-05 (tomat) Fixes a bug in interpreter - if an exception was thrown in finally clause the handler of that exception didn't get executed since the current instruction index was already beyond "endIndex". We need to set endIndex to _instructions.Length. Ruby: Removes old interpreter. 01-05 (tomat) Fixes bugs in the new interpreter and implements more features to support IronRuby. Fixes bug http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=572 and other eval issues related to control flow. 28-04 (tomat) RubyScope fixes and refactoring. This change enables top-level hosted code to define instance methods in DLR scope. It is no longer necessary to define them as singleton methods. Ruby engine executes the hosted code as if it was executed using instance_eval on a proc. The behavior is the same except for control flow; break or retry on top-level throws an exception as it does in MRI. This unit test illustrates the new behavior: // When executed without a scope top-level methods are defined on Object // (as in MRI): Engine.Execute("def foo; 1; end"); Assert(Context.ObjectClass.GetMethod("foo") != null); // When executed against a scope top-level methods are defined on main // singleton (not on Object) and also stored in the scope: var scope = Engine.CreateScope(); Engine.Execute("def bar; 1; end", scope); Assert(Context.ObjectClass.GetMethod("bar") == null); Assert(scope.GetVariable("bar") != null); Fixes bug in top-level scope compilation – variables from the scope were not bound properly: var compiled = Engine.CreateScriptSourceFromString("some_variable").Compile(); scope = Engine.CreateScope(); scope.SetVariable("some_variable", "foo"); Assert(compiled.Execute(scope) == "foo"); 25-04 (jdeville) - Update to v0.4.0.0 25-04 (jdeville) From Danielle: * IListOps.Difference now uses Object#hash and Object#eql? to check for object equality, this fixes the failing spec "Array#- acts as if using an intermediate hash to collect values" * Modified IListOps.RecursiveJoin to make it flag the resulting string as tainted if the given array, at least one of its elements or the separator string are tainted. * Changed IListOps.Repetition to return IList instances of the same type of the given self argument (this fixes also "Array#* with an integer returns subclass instance with Array subclasses") * Various changes to IListOps.Join to clear all of the remaining tags for the specs of Array#join. The tags marked as critical in join_tags.txt are not related to pending bugs for Array#join. * Added ArrayOps.ToAry as Array#to_a and Array#to_ary behave differently on subclasses of arrays. * Cleaning up tags removing expectations that do not fail anymore. * Changed one overload of IListOps.Equals to make it try to call #to_ary on the object argument of Array#== and use the resulting array as the actual argument for the equality check. * Changed IListOps.SetElement to make it try to invoke #to_ary on its argument for multi-element sets. * Changed IListOps.Reverse to return IList instances of the same type of the given self argument (this change also fixes the following failing spec: "Array#reverse returns subclass instance on Array subclasses") * Fixed IListOps.ReverseIndex as Array#rindex should not fail if elements are removed from the array during the iteration over its elements. * Slightly modified IListOps.UniqueSelf as suggested upon review. From Jimmy: * Allows symbols to be inside a YAML array http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=375 * Fixes for File.dirname, makes all dirname specs pass. For Rails to find log/development.log http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=499 * Uses [NotNull] instead of a explicit check. * Makes __FILE__ and $PROGRAM_NAME (and $0) have canonicalized paths when Ruby is hosted from ir.exe. However, __FILE__ is not messed with when including a file via require/load. Fixes http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=545 * autoload uses '/' to join load-path and autoload-path Fixes http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=674 * Code Review changes - Moves command_line/fixtures/file* and language/fixtures/file* to fixtures/ - Create RubyUtils.CanonicalizePath, to dependency on IronRuby.Builtins.Glob from IronRuby.Hosting * Code review updates: - Don't combine paths with '/' if the base-path already ends with '/' or '\\' - Remove Glob.CanonicalizePath (in favor of RubyUtils.CanonicalizePath) From Jim: * remove Glob.CanonicalizePath as requested by Tomas for CR for Jimmy * add ci_files to default.mspec so mspec ci works * add a filtered function to mspec to simplify default.mspec * categorizing uncategorized specs * removing extra spec files * update rubyspec and mspec * add a file with the git sha1 hashes of current mspec and rubyspec * implement File.umask in order to run the specs * Implement Process.waitall (needed by Process specs) Also implement Errno::ECHILD, Process.uid=, Process.wait and Process.wait2 * rebuilt ironruby tags * Code review fixes from Tomas * fixing up some missing tags 23-04 (jdeville) From Daniele: * Array#first(n) and Array#last(n) on a subclass of Array should return an instance of Array and not an instance of the subclass. * The result of Array#compact must keep the tainted status of the source array. * A block passed to Array#delete should be executed only if no element matches the given object * Array#flatten returns subclass instance for Array subclasses * Array#flatten does not call flatten on elements * Array#fetch passes the original index argument object to the block, not the converted Integer * Removed unused allocateStorage argument from IListOps.First and IListOps.Last; Removed the manual protocol conversion bits in IListOps.Fetch * Fix IoOps.ToPrintedString to output a double converted to string using an invariant culture (Issue #597 NumericLiterals1 test fails under french culture) * IListOps.ValuesAt adds a null value to the result if the begin value of the specified range instance(s) is <= the length of the array and the end value is >= the length of the array. * Array#uniq! raises a TypeError on a frozen array if modification would take place. * Fixed ArrayOps.ToArray to return a new RubyArray instance with the elements of self if self is a RubyArray.Subclass. * Array#initialize with (size, object=nil) uses the block value instead of using the default value * Fixed IListOps.Compare to work with recursive arrays. From Shri: - Adding the RubyGems 1.2 tests - Included the 1.3.1 tests as well. They can be used when IronRuby moves up to RubyGems 1.3.1 (which is what MRI 1.8.6p287 uses) - Added Scripts\RubyGemsTests.rb to run the RubyGems tests in the IronRuby dev environment - Added an optional task (use "irtests.bat -all") to irtests.bat to run the RubyGems tests. We can enable it by default once more people can try it out and make sure it works well - irtest.bat now runs in series by default. Use "irtests.bat -par" to tasks run in parallel - Calling exit in at_exit should set the error code. This is required to detect if RubyGemsTests.rb succeeded or not - Fixes Array#hash to work with recursive arrays - Also updated ArraySpecs.recursive_array to produce a cycle of length 3. Previously, it was doing "a << a" multiple times, but this does not increase the length of the cycle above 2. It just increase the number of cycles. This change required an update to many files. - Also added a new ArraySpecs.recursive_arrays function which should be used when dealing with two arrays (comparisons, merge, etc). I have only used it in equal_value_spec and eql_spec for now... - Also removed entries from critical_tags.txt since recursive hashing and comparison now works. - Changed irtests.bat to not use "mspec -V" (unless you are using "irtests -par") which was causing very verbose output - Changed irtests.bat to only use two "mspec" tasks so that "irtest -par" will spawn fewer processes. - Changed IronRuby.Tests.exe to show dots for each test instead of printing a new line which is very verbose - Changed irtests.bat to continue running tests even if previous test task failed. It remembers the failed results and prints the summary at the end. - Added ruby19.bat so that "mspec -tr19" runs with Ruby 1.9. It requires you to set RUBY19_EXE to point to your copy of the 1.9 version of ruby.exe From Jirapong: - fix File.new by re-throw exception - format indent style - added RubyErrno.cs to IronRuby.dll, move EEXIST, EINVAL, and ENOENT to IronRuby.dll - move RubyErrno's exceptions to exceptions.cs 15-04 (jdeville) Changes from Shri (Include changes from Jira and Daniele): * Implemented Zlib::GzipWriter.open * Added Kernel.abort * Mapped Errno::EACCES to System.UnauthorizedAccessException * File.delete catches IOException and rethrows Errno::EACCES to match MRI * Adds Errno::EXDEV * Updated rbconfig.rb to work with the dev environment. Change RbConfig[:ruby_install_name] to "ir". Note that it is not "ironruby" because RubyGems uses this to spawn new processes for running setup scripts , and so it needs to match the executable name (ir.exe). * Added Languages\Ruby\Tests\Interop\uncategorized_spec.rb as a place for devs to add CLR tests. Jim can later move them into the right place in CLR interop test suite. * fix missleading FileMode refer to http://rubyforge.org/tracker/index.php?func=detail&aid=25116&group_id=4359&atid=16798 * Fixed another bug in String#% * Bugs in File.rename * Ruby should exit when main thread exits, even if other threads are still alive * Mapped Errno::ENOENT to FleNotFoundException, and ENOTDIR to DirectoryNotFoundException * fix kernel.open with permission parameter * Fixes on top of Jirapong's fix for Kernel.open * Fixes File.expand_path to workaround a problem "igem i rails" was running into. * Fixes File apis to throw correct exception type * Implements Kernel.abort * Adds Errno::ECONNREFUSED * Exception#message should call Exception#to_s * Fixes paths in rbconfig.rb to work in dev environment * Fix the behaviour of Array#[]= with [start, length] * Delete tags for Array[]= Changes by Jim: * refactor method specs to use a shared behavior * namespace mapping and method addition specs * more namespace specs for adding and removing methods and classes * adding specs mixing Namespaces into Ruby classes * added specs for enums * remove dependencies on ClrAssembly * remove ClrAssembly from Ruby.sln. I'm leaving the ClrAssembly in the Git repo so that I can reference it when doing my specs * enum reflection specs * spec IEnumerable maps to Enumerable * spec IComparable maps to Comparable * idictionary support specs * Ilist specs * class modification specs (method addition and removal * spec comparable maps to icomparable * specs that Int32 is Fixnum and System::DateTime is Time * adding System::DateTime instantiation specs * interface reflection spec * implementing interfaces 15-04 (tomat) Moves old interpreter to Ruby. Cleans up scope factories (removes out parameters). A couple of other small tweaks. 13-04 (tomat) Adds support for .NET operators (op_* special methods). These methods behave like extension methods so some adjustments were needed in RubyOverloadResolver to handle “self” correctly. Implements bitwise operators on flag enums: each flag enum gets a FlagEnumeration mixin that includes &, |, ^, and ~ methods. The implementation is the same as Python have so I factored it out to EnumUtils in DLR. Fixes implementation of RubyObject.ToString and Kernel#to_s so that “to_s” is called from ToString on Ruby objects and ToString is called from Kernel#to_s for .NET objects. Also implements ToString on built-ins where it was missing and it makes sense to have it: range and regex. Although Array and Hash implement to_s as well the result is a plain concatenation of string representation of their items (entires). E.g. [“a b”, “c”].to_s == “a bc”. I don’t think adding RubyArray/Hash.ToString doing the same would be useful for .NET users. Moves Protocols from libraries to IronRuby.dll. Implements more DLR interop binders and refactors existing ones. Adds support for COM interop to interop binders and Kernel#methods. Fixes a bug in Ruby AST that emitted wrong code for an empty AST. 08-04 (tomat) Redesigns the default method binder. Implements partially restricted splatting feature in Ruby. Replaces calls to obsolete methods of default method binder with those using meta-objects. Fixes http://ironpython.codeplex.com/WorkItem/View.aspx?WorkItemId=18379. 04-04 (jdeville) Jim: - closing Rubyforge 15060 - [#24589] $PROGRAM_NAME in 'English' not working now fixed - making $0 the same object as $PROGRAM_NAME and adding specs for it. Closes [#24589] $PROGRAM_NAME in 'English' not working - closing Rubyforge [#15061] tracking: create generic interface type - closing RubyForge [#15651] NoMethodError expected when calling the private method 'initialize' of a ruby class - added protected method invocation specs. Closes Rubyforge [#19118] Protected members not available when inheriting from CLR type - adding regression test for [#19872] IComparableOps.CompareTo throws argument error when type is Decimal - added reference support to csc.bat - closing [#17467] Accessing IronRuby method from C# - closing [#19950] Dir.glob doesn't handle ** - closing [#20027] Formatting float to string produces incorrectly "Infinity" - closing [#20043] creating a generic type when the type is an interface - closing [#20052] Calculating 3.0/2.0 produces NaN - closing Rubyforge [#20263] Dir.glob doesn't handle missing folders - closing [#20410] GetKCodeName - adding test to ensure that File.stat returns a File::Stat object - closing Rubyforge [#20640] Calling File.open with an integer (File descriptor overload) causes the File.open site to be unusable - closing Rubyforge [#20664] Respecting visibility of methods. Also fixes a compilation error due to multiple IInterface definitions - Closing RubyForge [#20665] Can't use an indexer on a WPF ResourceDictionary - removing a tag for predefined - closing Rubyforge [#21943] NullRef exception thrown while comparing a list containing elements with overriden == - closing Rubyforge [#21995] kind_of? not working with when extend is used - recommiting some changes that were reverted by the merge. Methinks someone in TFS changed them. This makes describe work with 2 strings for shared behaviors, and it makes csc output #line pragmas - fixing some more errors from the merge - Adding class instantiation specs for regular classes with overloaded constructors - adding regression tests for [#22197] calling super throw Argument Error - adding StringBuilder specs to get rid of test_basic.rb. Also added equal_clr_string matcher - refactor specs to use the equal_clr_string matcher - basic string specs to remove test_basic.rb - added more string specs to get rid of test_basic. Also adds field specs - adding some basic event add and remove specs - added event invocation specs Shri: - YAML should allow spaces. eg the trailing \s\t in YAML.load("!timestamp '2009-03-22 00:00:00\s\t'") is allowed - Changed igem.bat, irake.bat, etc to work in dev environment where ir.exe is not in the path - File.expand_path("~") should throw ArgumentError is HOME is not set - make orig_name, comment, and split close and finish - compile error when pull form irmain, merge in zlib - spec for finish, close, oriname, and trying to DRY orig_name and comment - make orig_name, comment, close, and finish passed spec. - Implements File.chmod - File.readable? should return false if the given filename does not exist - File.delete should be able to delete a read-only file. This is implemented by making the file writable first. This is the only solution I could find. - Added debugger visualizer for RubyObject so that VS will display the result of to_s in the Watch window. - Adds the wrapper script Merlin\Main\Test\Scritps\ir.cmd so that the Legacy tests (Ruby\Scripts\test.bat) can pass without any failures. 28-03 (sborde) - Adding unit tests for Ruby's IDMOP support. Failing scenarios are tagged with AreEqualBug and AssertExceptionThrownBug - Added Languages\Ruby\Scripts\ir_wrap.cmd as the replacement for Test\Scripts\ir.cmd which does not exist in GIT. Most of the files are changed because of this. 27-03 (jdeville) - modify .gitignore to ignore Bin in addition to bin - Adds ClrAssembly to Ruby.sln - add dlr_config to IronRuby object - csc describe handles shared specs (multiple arguments) and we now emit #line pragmas instead of comments - adding some generic tests and fixing tags, also make default.mspec load ir.exe instead of ir.cmd - adding some constrained generic specs - added generic error messages specs. Fixed tag location - split pragma warning to make sure I do not disable unintended warnings. Refactor conflicting methods - added class param and conflicting type param specs - adding specs for ruby classes with type constraints - array conversion specs - array instantiation specs - redid IronRuby.dlr_config after Tomas' IronRuby changes - adding a default conversion spec and a little bit of refactoring - more array tests - spec for a static method caching bug i found - spec method overriding maintains .NET supermethod - refactor to add some metaclass helpers - class instantiation specs - some more class instantiation specs - sealed class instantiation specs - generic instantiation specs - make GenericClass have a method so it isn't EmptyGenericClass - more generic instantiation specs 26-03 (tomat) Implements atomizer for Ruby call site binders: A new class RubyMetaBinderFactory creates sites and caches them in dictionaries. Sites are either bound to a runtime (RubyContext) or not. Bound sites don’t emit context check, unbound need to. Bound sites don’t take RubyContext as the first parameter any more. They can still take RubyScope if needed (such sites have HasScope flag set). Replaces SiteLocalStorage with RubyCallSiteStorage that holds on the context so that it is not necessary to pass RubyContext to the sites stored in the storage. Updates all sites in libraries accordingly. Adds –ER command line option that enables tracing of meta-objects (rules) created by Ruby. Refactors MetaObjectBuilder to use type restrictions rather than expression restrictions. Removes RubyClassAttribute.MixinInterfaces – it didn’t work correctly and was almost unused. Also improves handling of BOM in 1.8 mode – we previously did exactly what Ruby does, i.e. report a syntax error from which it is not obvious what’s wrong. If –KU is not specified and UTF8 BOM is found at the beginning of the source code, the tokenizer reports a level 2 warning, skips the BOM as if it was whitespace and continues reading the file. 24-03 (tomat) A couple of breaking changes: - Removes ClrString constant. CLR string should be referred to as System::String. - Removes IronRuby library. “require ‘IronRuby’” is no longer needed, IronRuby module is now a built-in module. Implements integer/float operations for all CLR primitive numeric types (byte, sbyte, short, ushort, uint, long, ulong, float). Those integer types that fit in 32-bit signed integer (Fixnum) are widened to Fixnum for all operations. The other integer types are widened to BigInteger. Float is converted to double. The operations on these types don’t narrow their results even if the values fit. For example, (System::Byte.new(1) + 1).class == Fixnum, not System::Byte. This might not be optimal for some scenarios. If we find it important we’ll fix this in future. The implementation takes the operations from FixnumOps, BignumOps and FloatOps and moves them to new modules IronRuby::Clr::Integer, IronRuby::Clr::BigInteger and IronRuby::Clr::Float respectively. These are mixed back into the numeric types. Some methods need to be specialized for each types, so we generated C# code for them. Ruby 1.9 script ClrInteger.Generator.rb produces ClrInteger.Generated.cs. Implements System::Char and System::String methods so that they behave like an immutable UTF-8 encoded string (of size 1 character in the case of System::Char). Many methods in MutableStringOps can share implementation with CLR string. There is still a lot of work to be done here, especially to support encodings. So for now, to make CLR strings work like Ruby frozen strings to a large extent, I’ve implemented method-missing dispatch that forwards to a MutableString. ironruby-0.3.0.0 - 2009-03-20 ----------------------------- - Improves Ruby tokenizer and parser by 30% - Moved source code repository to GIT, unsigned builds - Thread library (Thread#stop, Kernel#sleep, Thread#raise, Thread#critical=) - Fixes interpretation of UnaryExpresion cast with a custom method - Implements generic methods parameters binding and explicit overload selection - Makes operations on class hierarchy thread-safe - Fixes binder error message given when an interface name is displayed. - Adds additional RubySpec tests to language/regexp_specs.rb - Fixes Zlib::Inflate#inflate and File#join (for gem install) - Adds -e support to IronRuby using CommonConsoleOptions.Comand. - Regexp literal support for /o - Fixnum + Bignum should yield a Bignum, not a Float - Implements Ruby protected visibility, fixes other bugs in Module (all specs pass now) and assignment in eval. - Implements loading of assembly dependencies.