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