#develop (short for SharpDevelop) is a free IDE for .NET programming languages.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

5019 lines
261 KiB

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: <float> in <bytearray> throws wrong exception
- 25895: coerce(<complex>, <huge_long>) 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<T>(ref T x);
Foo(1)
Foo(StrongBox())
2) Multiple generic parameters
public IEnumerable<TResult> Select<TSource, TResult>(IEnumerable<TSource> source, Func<TSource, TResult> selector);
3) Generic arrays
public int Foo<T>(T[] x);
4) Type shape difference
public static int f5<T>(Dictionary<Dictionary<string, T>, Dictionary<int, T>> arg);
C.f5( Dictionary[List[str], Dictionary[int, str]]() )
In general type inference seems to need more test coverage <EFBFBD> various type shapes, arrays, ref/out with and w/o strong boxes, params array, params dict, optional, named combinations.
I<EFBFBD>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<object*> and Action<object*> 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<EFBFBD>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<EFBFBD>s dependency on Reflection types (other than Type). This change goes half way <EFBFBD> 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<EFBFBD>s dependency on Reflection types (other than Type). This change goes half way <EFBFBD> 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[<EFBFBD>libdir<EFBFBD>] 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<Expression>.
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<EFBFBD>t dispatch further events. Also fixes an issue where the code name was in correct (should be <EFBFBD><modue><EFBFBD>) 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<EFBFBD>s
25708 ctypes.wintypes missing / wintypes simple types not implemented
Add support for variant bool type along w/ new test cases added to CPython<EFBFBD>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 <EFBFBD> these reducible nodes reduce to strongly typed DynamicExpressions yet when interpreted use untyped dynamic sites (sites typed to CallSite<Func<CallSite, object*>>). 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<EFBFBD>s ReflectionCache holds on MethodInfos for all RubyOps. Whenever a helper MethodInfo is needed a delegate is created for it and cached into CallInstruction<EFBFBD>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<EFBFBD>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 <EFBFBD>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 <EFBFBD>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 <EFBFBD>mono<EFBFBD> parameter and a path to the Mono bin directory. If supplied, it sets ROWAN_RUNTIME environment variable to <EFBFBD>mono<EFBFBD> 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 <EFBFBD>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,
<EFBFBD>
(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<Expression>) 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<T> 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<EFBFBD>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<EFBFBD>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<EFBFBD>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<EFBFBD>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<InterpretedFrame> 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];
<EFBFBD>
T$n loc$n = (T$n)frame.Data[$indexN];
StrongBox<object> closure_loc$1 = frame.Closure[$index1];
<EFBFBD>
StrongBox<object> closure_loc$M = frame.Closure[$indexM];
try {
<EFBFBD> loc$1 = value <EFBFBD>
<EFBFBD> closure_loc$1.Value = (object)value;
<EFBFBD> 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.).
<EFBFBD>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 <EFBFBD> the interpreter handles jumps from finally directly, so we don<EFBFBD>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 <EFBFBD>goto label<EFBFBD>.
Ruby, Python:
CatchBlock defines a scope for its exception variable, which wasn<EFBFBD>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 <EFBFBD>compileLoops<EFBFBD> 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 <EFBFBD>me<EFBFBD> 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<EFBFBD>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 <EFBFBD>out<EFBFBD> parameters that were forcing the interpreter to compile the rules.
Also removes <EFBFBD>hacks.rb<EFBFBD> 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 <time-zone-name>< zone offset hh:mm:ss> and stores the parsed values into global variables. It doesn<EFBFBD>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<EFBFBD>t correctly implement daylight saving related API (Time#dst?). If the offset is not specified in TZ variable we don<EFBFBD>t know anything about the zone and thus no zone related methods work correctly. And indeed the specs are failing. Besides, MRI doesn<EFBFBD>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[<EFBFBD>TZ<EFBFBD>] is assigned to. Current limitations:
1) TZ variable needs to define zone offset. We don<EFBFBD>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 <EFBFBD> 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 <EFBFBD> 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 <EFBFBD>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 <EFBFBD>mspec ci core<EFBFBD> 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<T> <EFBFBD> performs language specific conversion to T, like ConvertTo<T> and GetVariable<T>
- 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<EFBFBD>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 <EFBFBD> the inheritance hierarchy is incorrect. It makes more sense to treat generic type definitions as modules <EFBFBD> they can<EFBFBD>t be instantiated, don<EFBFBD>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<EFBFBD>s BindSetMember <EFBFBD> it needs to convert the result expression to Object.
Fixes http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2421 <EFBFBD> if a CLR array is passed to params-array parameter it is not treated as a single parameter. Instead the overload resolver <EFBFBD>splats<EFBFBD> it by default (implements C# semantics). This is not the right behavior for Ruby. I<EFBFBD>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 <EFBFBD> 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<EFBFBD>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 <EFBFBD>new slot<EFBFBD> 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<EFBFBD>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 <EFBFBD> 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<EFBFBD>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 <EFBFBD> it didn<EFBFBD>t handle spaces in RUBY_EXE path correctly.
Implements Win32API library <EFBFBD> irb depends on it if run on Windows and it <EFBFBD>worked<EFBFBD> only due to a bug in Kernel#`.
Fixes IO#tty? <EFBFBD> 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 <EFBFBD> not a strong reference as we do today.
24720 Unexpected site.py behavior - loaded from current dir
DLR shouldn<EFBFBD>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<EFBFBD>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 <EFBFBD>pecified path<EFBFBD> error message to include the S
Removing GC.SuppressFinalize call from XRange iterator that isn<EFBFBD>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<EFBFBD>s.
Removes CompilerHelpers.IsAttributeDefined <EFBFBD> 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<EFBFBD>) 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<EFBFBD>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 <EFBFBD>constant<EFBFBD> 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<EFBFBD>t need to allocate the string if it is.
-------------------------------------------------------------------------------
User: merllab
Date: Wednesday, September 23, 2009 1:09:45 PM
Comment:
(tomat) Prevents a possible recursion caused by user code executed when processing
AssemblyResolve event.
Fixes http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2533.
-------------------------------------------------------------------------------
User: merllab
Date: Tuesday, September 22, 2009 6:56:30 PM
Comment:
(tomat) Fixes Dev10 solutions and properly quotes command lines in alias.txt.
(Shelveset: SimpleDev10;REDMOND\tomat | SNAP CheckinId: 9462)
-------------------------------------------------------------------------------
User: merllab
Date: Tuesday, September 22, 2009 3:20:28 PM
(tomat) Affects DLR and Ruby.
Fixes bugs:
http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2476
http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2045
http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2027
DLR:
Renames Set<T> to HashSet<T> and makes it public (so that we can use it in IronRuby).
Implements workaround for a bug in 32bit console.
v10/feature/vs_langs01_s/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/ModuleOps.cs
-------------------------------------------------------------------------------
User: merllab
Date: Thursday, September 17, 2009 2:43:17 PM
(dinov) fix dev10 build issues
(Shelveset: Dev10Build;REDMOND\dinov | SNAP CheckinId: 9442)
-------------------------------------------------------------------------------
User: jdeville
Date: Thursday, September 17, 2009 1:26:02 PM
Fixing rake compile
-------------------------------------------------------------------------------
User: tomat
Date: Thursday, September 17, 2009 10:43:38 AM
Fixes Ruby.sln
-------------------------------------------------------------------------------
User: merllab
Date: Thursday, September 17, 2009 9:49:39 AM
(dinov) directory shuffle - final
(Shelveset: DirectoryShuffle_Final2;REDMOND\dinov | SNAP CheckinId: 9437)
-------------------------------------------------------------------------------
User: merllab
Date: Wednesday, September 16, 2009 11:28:46 AM
(dinov) directory shuffle
(Shelveset: DirectoryShuffle_Phase1_2;REDMOND\dinov | SNAP CheckinId: 9432)
-------------------------------------------------------------------------------
User: tomat
Date: Tuesday, September 15, 2009 2:39:20 PM
Fixing Ruby.sln.
-------------------------------------------------------------------------------
User: merllab
Date: Monday, September 14, 2009 7:37:37 PM
(dinov) move hosting APIs
(Shelveset: MoveHapi12;REDMOND\dinov | SNAP CheckinId: m10224)
-------------------------------------------------------------------------------
User: merllab
Date: Monday, September 14, 2009 6:17:45 PM
(tomat) Fixes bugs
http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1535:
Parallel assignment should call to_ary
http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1995:
Line number in callstack is sometimes 16707566 (0xFEEFEE)
and language specs:
fails:Calling a method fails with both lambda and block argument
fails:The 'case'-construct raises a SyntaxError when 'else' is used when no 'when' is given
-------------------------------------------------------------------------------
User: merllab
Date: Friday, September 11, 2009 4:39:08 PM
(tomat) Affects Core DLR, DLR, Debugging, ET tests, Python, Ruby, Simple.
Moves Func and Action delegates into Microsoft.Scripting.Utils namespace for CLR2 build.
Non-trivial changes:
Ruby
LibraryDef.cs <EFBFBD> initializer generator needs to not use full names of Func and Action in generated code.
ClrTests.cs <EFBFBD> avoid using full names for Func and Action
DLR
ReflectionUtils <EFBFBD> support for custom naming in name formatters (used by Ruby)
Simple
test.sympl, test.bsl <EFBFBD> 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<EFBFBD>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, <EFBFBD>). 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<EFBFBD>t just throw an exception. Instead, it looks first into a table of loaded CLR
namespaces (for symbols like System, Microsoft, etc.) and then into the global
scope. Only if the constant is not found there an exception is thrown. The lookup
in the global scope uses reverse name mangling. ...
-------------------------------------------------------------------------------
User: merllab
Date: Friday, September 04, 2009 6:07:25 PM
(tomat) Changes namespace where ETs are defined (System.Linq.Expressions) to
Microsoft.Scripting.Ast for non-Dev10 build.
Mostly #if-def like
#if CLR4
using System.Linq.Expressions;
#else
using Microsoft.Scripting.Ast;
#endif
or
#if MICROSOFT_SCRIPTING_CORE
namespace Microsoft.Scripting.Ast {
#else
namespace System.Linq.Expressions {
#endif
Some files needed special treatment:
- ETScenariosCSLinq
Rebuilt with M.S.Ast namespaces. Some tests are using inline LINQ expressions
(implicit conversion from anonymous method to Expression<T>), which don't work
if Expression<T> is not in System.Linq.Expressions namespace. I've #if-def'd
these tests out.
Changed references to assemblies to project references in .csproj file so that
"msbuild ETScenariosCSLinq.csproj" works.
- DlrCore.rsp and *proj files
Defines CLR4 constant for Dev10 build where missing.
- Python version of Sympl, test_cliclass.py
Fixed imports.
Deletes Main\Languages\CSharp.
-------------------------------------------------------------------------------
User: merllab
Date: Friday, September 04, 2009 3:35:01 PM
(dinov) Makes Scope objects backed by IDynamicMetaObjectProvider objects instead of
an IAttributesCollection.
Adds a wrapper object for backwards compatibility w/ existing IAttributesCollections.
Scope now implements IDMOP so that you can do gets/sets/deletes against it.
It forwards these calls directly through to the storage object which is backing
it and does an instance restriction on its self.
Adds new ScopeStorage class which is the default expando object used for storage
of scopes. Scope storage supports both case sensitive and case insensitive attribute
lookups. This exposes an API which allows consumers to cache results against an
individual scope (again in either a case sensitive or insensitive way). Languages
can hold onto these objects so that they can quickly access the value (just a
field load) in a cached manner. This is also a publicly exposed API so that
languages can create pre-compiled rules against it and don<EFBFBD>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<EFBFBD>t a problem for moving the hosting APIs but is actually broken <EFBFBD>
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<EFBFBD>t handled correctly.
Fixes bugs in interpreter:
- Void lambda whose last body expression is non-void didn<EFBFBD>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<EFBFBD>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<EFBFBD>s the global CodeContext the locals dictionary is the same as the ModuleContext<EFBFBD>s
dictionary.
PythonModule is a new IDO which just enables dotting through module properties <EFBFBD> it<EFBFBD>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 <EFBFBD> I<EFBFBD>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 <EFBFBD> not the translated arguments. This rule would get cached and we<EFBFBD>d do a
re-bind w/o doing the translation. The rebind would go directly to DispCallable<EFBFBD>s
IDynamicMetaObjectProvider and we wouldn<EFBFBD>t have a chance to intercept the call.
The COM generation script is updated to generate all of the code twice <EFBFBD> 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<EFBFBD>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<EFBFBD>t exist
We refer to math resources which Tomas recently removed
EngineTest needs some object casts to build w/ C# 4.0 <EFBFBD> already fixed in vs_langs01,
this is pulling the fix into vs_langs01_s
Renaming SYSTEM_CORE -> CLR4 missed some spots this was being used in Ruby
-------------------------------------------------------------------------------
User: merllab
Date: Wednesday, August 19, 2009 5:09:18 PM
(jdeville) Shri:
Fix for Kernel#enum_for which was affecting Cucumber
Adds version checks to RakeTests.rb and RubyGemsTests.rb to catch configuration issues quickly
Allow ir.exe -r<somelib> without space after the -r. Similarly for -e
File.truncate and File#truncate
Improves File::Stat.
sysread/syswrite should track read and write buffering separtely
Implements IO.pipe
Implements Open3#popen3 (which does not work on MRI 1.8, but does work on MRI 1.9).
The "session" gem now gets further along after setting %SESSION_USE_OPEN3%, but it still does not work
Factors out code for printing warning into IoOps.ReportWarning
Implements IO#write_nonblock to throw an exception since it is not supported by MRI on Windows.
Implements IO#sysread, syswrite and sysseek, which call Flush. Ideally, we would create
new Streams using FileOptions.WriteThrough.
Tweaks the "complain" RubySpec helper to include actual stderr
Makes irtests.rb use the full path for mspec.bat
Changes com_helper.rb to include check for Office 10
Adds basic test for "ir.exe -profile"
Adds a script tags_stats.rb to measure number of RubySpec tags
Fixes a bunch of issues preventing irtests.bat from running cleanly on some machines:
Fix for regex bug - http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1895
Added a splash screen to the tutorial
Merge branch 'master' of http://github.com/ironruby/ironruby
BasicSocket#recv should mark the thread as sleeping
Adds support for ir.exe -Ifoo;bar. Previously, we were not breaking it up into two paths.
The stricter tests in upper_dash_i_spec.rb caught two other issues:
Fixed assert in OverloadResolver.cs
Adds tests for the tutorial sample to irtests.rb
Add test-spec
Jimmy
SP1 check should show the correct language name.
Ryan
Changed the :LibraryPaths in context.rb to point to redist_libs from Ruby-1.8.6p287
Also includes changes from Jirapong that TFS wouldn't let me document.
-------------------------------------------------------------------------------
User: merllab
Date: Wednesday, August 19, 2009 1:55:26 PM
(dinov) fix dev10 build
-------------------------------------------------------------------------------
User: merllab
Date: Thursday, August 13, 2009 12:46:11 PM
(tomat) Fixes bug
http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=643
-------------------------------------------------------------------------------
User: merllab
Date: Wednesday, August 12, 2009 11:23:34 PM
(tomat) Fixes core/io, core/file, and library/stringio spec failuires.
Includes Shri<EFBFBD>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<EFBFBD>ve fixed them or deleted them. Some might work on Unix
so I<EFBFBD>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<EFBFBD>s clear if the differences are intentional or not. I<EFBFBD>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<EFBFBD>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<EFBFBD>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<EFBFBD>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 <EFBFBD>handled<EFBFBD> so that we don<EFBFBD>t call
new in the next rescue in the case the exception is rethrown. We also mark <EFBFBD>handled<EFBFBD>
any exception object that is dynamically constructed by Class#new. Such exceptions
shouldn<EFBFBD>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<EFBFBD>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 <EFBFBD> using empty type names: C<,> instead of C<K,V>.
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<int>, List<string>, 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<T> {
public virtual int Arity { get { return 1; } }
}
public class C<T,S> {
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 <EFBFBD> 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) # => [<EFBFBD>c<EFBFBD>, <EFBFBD>c<EFBFBD>, <EFBFBD>c<EFBFBD>]
System::Array[String].new([C.new, C.new]) # => [<EFBFBD>c<EFBFBD>, <EFBFBD>c<EFBFBD>, <EFBFBD>c<EFBFBD>]
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 <sborde@microsoft.com>
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/<EFBFBD> via dynamic GetMember/SetMember/<EFBFBD> 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<EFBFBD>s UnboundNameException).
- ScriptScope.GetVariable doesn<EFBFBD>t return variables that are not contained in the scope
itself. Previously it returned e.g. Python built-ins (like <EFBFBD>dir<EFBFBD>) if the scope was
associated with Python.
- ScriptScope.RemoveVariable doesn<EFBFBD>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<EFBFBD>s
been replaced w/ a OverloadResolverFactory instead.
There<EFBFBD>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 <EFBFBD>mangling<EFBFBD> shelveset.
commit a24144a45743c5e6d8ec27532c6afceb6607cc62
Author: Daniele Alessandri <suppakilla@gmail.com>
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 <suppakilla@gmail.com>
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 <suppakilla@gmail.com>
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 <sborde@microsoft.com>
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 <jdeville@microsoft.com>
Date: Wed Jul 22 11:38:40 2009 -0700
syncing to head of tfs
commit 421d9869c60d892b36ba324ce9cb8c89bdc77125
Author: Shri Borde <sborde@microsoft.com>
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 <sborde@microsoft.com>
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 <jdeville@microsoft.com>
Date: Sun Jul 19 00:55:46 2009 -0700
added back ubygems.rb
commit 6f32be3294cbd4a814066d08a30b51f4f6ea5c3a
Author: Daniele Alessandri <suppakilla@gmail.com>
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 <jschementi@gmail.com>
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 <sborde@microsoft.com>
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 <jschementi@gmail.com>
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 <jschementi@gmail.com>
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<object>[].
Fixes a bug in state variable allocation for flip-flop operator.
commit 427cd3038a649103e18abacf78c0a83d467a19ac
Author: Shri Borde <sborde@microsoft.com>
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<T> 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<Expression>)
o Visit<T>(ReadOnlyCollection<T>, Func<T, T>)
o VisitAndConvert<T>(T, string)
o VisitAndConvert<T>(ReadOnlyCollection<T>, 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 <sborde@microsoft.com>
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 <sborde@microsoft.com>
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 <EFBFBD>HasChanged<EFBFBD> flag which is set
by every mutating operation.
- Reimplements <EFBFBD>tr<EFBFBD>, <EFBFBD>tr!<EFBFBD>, <EFBFBD>tr_s<EFBFBD>, <EFBFBD>tr_s!<EFBFBD>. The new implementation is almost 12x faster.
- Reimplements <EFBFBD>join<EFBFBD> to achieve better perf.
Improves handling of KCoding <EFBFBD> combination of two strings k-coded by a different
encoding doesn<EFBFBD>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 <sborde@microsoft.com>
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<EFBFBD>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 <sborde@microsoft.com>
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 <http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1521>
File.expand_path does not support a line number after filename
from <http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=821>
alias_method fails for :do
from <http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1502>
Proc.to_s should include line number where the block was declared
from <http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1509>
WinForms broken
from <http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1501>
$? is not always Process::Status
from <http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1400>
load_assembly(<partial_name>) should work
from <http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1345>
System.Action.new does not work
from <http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1344>
Cannot call CLR constructor of builtin type
from <http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1306>
public(:foo) does not work correctly for mixed-in methods
from <http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1184>
Cannot call new on subtypes of builtin classes whose "new" method has
optional arguments
from <http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1085>
visibility of send :define_method
from <http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=1060>
Passing a Ruby array to a .NET method that expects an IEnumerable
derivative fails with GetEnumerator call
from <http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=917>
Assert in SetMethodBasesNoLock when calling #== on Ruby class inheriting
from CLR class which overrides Equals
from <http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=783>
Wrong behavior when calling redefined methods on object instances
from <http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=761>
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:
<EFBFBD>hash<EFBFBD> is mapped to <EFBFBD>GetHashCode<EFBFBD> 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<EFBFBD>t implement
<EFBFBD>hash<EFBFBD> method.
3) A Ruby data structure (like Array) that calculates its hash code based
on hash codes of its items dynamically calls <EFBFBD>hash<EFBFBD> on those items.
4) Any call from C# to GetHashCode on an instance of any Ruby class will
dynamically dispatch to either <EFBFBD>hash<EFBFBD>, <EFBFBD>GetHashCode<EFBFBD> or <EFBFBD>get_hash_code<EFBFBD>
whichever is found first in standard method resolution order. If multiple
of these methods are defined in the same class <EFBFBD>hash<EFBFBD> has highest priority
and <EFBFBD>get_hash_code<EFBFBD> the lowest. This implies that a Ruby method definition
with name <EFBFBD>hash<EFBFBD>, <EFBFBD>GetHashCode<EFBFBD> or <EFBFBD>get_hash_code<EFBFBD> in any Ruby class
overrides GetHashCode of the parent CLR class.
Similarly is <EFBFBD>eql?<EFBFBD> mapped to <EFBFBD>Equals<EFBFBD>.
Kernel#== is an alias for <EFBFBD>eql?<EFBFBD> and hence has the same behavior when invoked.
However, 4) doesn<EFBFBD>t hold for <EFBFBD>==<EFBFBD>, 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 <EFBFBD>detached<EFBFBD> (as opposed
to <EFBFBD>attached<EFBFBD> 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 <EFBFBD> should re-box numeric values.
- Force compilation whenever ref/out parameters are encountered.
- Invocation expression with delegate target.
- Unbox <EFBFBD> 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<EFBFBD>t contain loops or other constructs
that force compilation) it creates an InterpretedDispatcher that hooks the
lambda<EFBFBD>s <EFBFBD>Compiled<EFBFBD> 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 <EFBFBD>include?<EFBFBD> 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<EFBFBD>s MethodGroupInfo was doing MakeGenericMethod and then returning the
generic method.But the types it<EFBFBD>s passing in are all generic parameters <EFBFBD>
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<EFBFBD>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 <EFBFBD> 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 # => <EFBFBD>method called: +<EFBFBD>
p x.CompareTo(y) # => <EFBFBD>method called: compare_to<EFBFBD>
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 <EFBFBD> they are
essentially empty objects that you can<EFBFBD>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<EFBFBD>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<EFBFBD>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.
<EFBFBD> Improves reflection cache generator <EFBFBD> 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.
<EFBFBD> Merges RubyModule.Subclass into RubyModule, i.e. RubyModule now implements
IRubyObject.
<EFBFBD> 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.
<EFBFBD> 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.
<EFBFBD> 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; <EFBFBD>; end). We can postpone the
transformation until the method is called for the first time. This
significantly improves startup time. For example (not NGEN<EFBFBD>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<EFBFBD>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<EFBFBD>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<EFBFBD>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(<partial_name>) 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 <EFBFBD> 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<int> 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 <EFBFBD> it<EFBFBD>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<EFBFBD>ve fixed generic_spec nad overload_spec and commented out a block in
protected_spec <EFBFBD> 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 <type> (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 <EFBFBD> they are exposed as constants on
the declaring type. Also implements removal of namespace member and nested
type constants.
Fixes a bug in autoload <EFBFBD> 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 (<EFBFBD>initialize<EFBFBD> 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<EFBFBD>t have RubyClass or
RubyContext parameter RubyClass parameter is injected. We also need to
ensure that we don<EFBFBD>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 <EFBFBD> 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<EFBFBD>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) <EFBFBD> MRI 1.9 allows combination of such strings.
Fixes:
- <EFBFBD>IronRuby ignores RUBYLIB environment variable<EFBFBD>
http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=718
- Encoding wasn<EFBFBD>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 <EFBFBD>empty<EFBFBD>
library method
5) no context class checks are needed due to protected visibility
6) the method doesn<EFBFBD>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
<ruby code>
#else
<C# template>
#end
#region Generated by <EFBFBD>
<generated code>
#endregion
It creates a new class G < Generator for each such block end module-eval<EFBFBD>s
<ruby code> in that class. Then it calls G.new.generate. The default
implementation takes the <C# template> and replaces each occurrence of
/*$MethodName*/ or /*$MethodName{*/ <EFBFBD> /*}*/ in the template by a value
returned by a call to MethodName on the generator class. The generator
replaces the content of <EFBFBD>Generated by<EFBFBD> region by the resulting code. The
<C# template> is optional <EFBFBD> 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, <EFBFBD>)
to RubyModule and RubyClass so that they don<EFBFBD>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 <EFBFBD> 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<string>(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 <EFBFBD>self<EFBFBD> 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
<EFBFBD>to_s<EFBFBD> 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. [<EFBFBD>a b<EFBFBD>, <EFBFBD>c<EFBFBD>].to_s == <EFBFBD>a bc<EFBFBD>.
I don<EFBFBD>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<EFBFBD>t emit
context check, unbound need to. Bound sites don<EFBFBD>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 <EFBFBD>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 <EFBFBD> it didn<EFBFBD>t work correctly and
was almost unused.
Also improves handling of BOM in 1.8 mode <EFBFBD> we previously did exactly what
Ruby does, i.e. report a syntax error from which it is not obvious what<EFBFBD>s
wrong. If <EFBFBD>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. <EFBFBD>require <EFBFBD>IronRuby<EFBFBD><EFBFBD> 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<EFBFBD>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<EFBFBD>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<EFBFBD>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.