Re: [Mono-dev] [PATCH] System.Threading.Parallel

2007-12-28 Thread Marek Safar
Hello,

 Thanks for the comments. I do not see such an example in my diff: I 
 have not modified corlib yet, just svn-copied and modified the 
 relevant build files from another assembly and added my own, see 
 below. ECMA_PARALLEL_SUPPORT is not being defined anywhere, should I 
 better use #if 0 to make it more obvious?
Yes, #if 0 is more obvious.

 This patch seems independent of Microsoft's new parallel library, and 
 the extensible way of implementing it I suggested on another thread 
 would likely enable us to share backends between both libraries. That 
 part is not implemented yet, I'd like to have a working base revision 
 first, which this patch is intended as. Would be great if we could get 
 something in before Christmas, then I can work on the next gen between 
 the years before I start my number crunching in January.
If you are going to share anything between this library and 
ParallelExtensions then the code should go to olive repository as we 
maintain CTP or experimental libraries there.

Marek

___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list


Re: [Mono-dev] [PATCH] System.Threading.Parallel

2007-12-27 Thread Andreas Färber
Hello Miguel,

Unfortunately I don't have regular Internet access right now.

Am 24.12.2007 um 15:50 schrieb Miguel de Icaza:

 Am not sure that I we have known where this code would go, as I stated
 to you in an email on December 11th:

If you have an implementation, we would not have a problem
bundling it.  The question is on which assembly it goes.

 There is some extra background in the email regarding this particular
 assembly.

Yes, and I read it. That was your response to my asking specifically  
about mcs/. Your saying you'd not have a problem bundling it seemed to  
confirm the location mcs/ as you didn't reject or propose another  
location. So without further responses, I put my code into mcs/.

Regarding the above question of an assembly, I replied on Dec 12 that  
according to the standard this were System.Threading.Parallel.dll and  
corlib. I got no further response on that indicating you actually  
meant repository folder/directory/module rather than assembly.
If you did/do actually mean to create a new non-standardized assembly  
then there is little point in exactly duplicating the ECMA interface,  
I could then go with static (wrapper) methods for some operations  
rather than creating instance objects, and from my view such a custom  
assembly shouldn't go into either of mcs or olive then.


 A separate repository is usually a good idea to let libraries  
 mature, as
 I mentioned on my emails, the ECMA System.Threading.Parallel was
 submitted by Intel, but as far as we know, no implementation was ever
 tested on real applications, so it avoided the entire refining cycle.

But I'm in no position to change the ECMA standard! So there will be  
no such refining cycle now either, wherever we put the code - only the  
users' choice of whether to use that API or not.

 As a matter of policy, we have had libraries developed externally for
 months (or even years) before they went into mcs.   System.Core and
 Cecil are two examples.

 But also, we are trying hard to reduce the number of assemblies that  
 we
 ship (there are numerous posts on this subject elsewhere), but the  
 basic
 problem is that mcs has become too large and bugs in a an area require
 releasing the entire Mono to fix those problems.

 And today we suffer from various early mistakes when plenty of  
 libraries
 made it into mcs,  We now regard shipping inside mcs as a liability,  
 and
 have even initiated the planning to split out all the Microsoft- 
 specific
 libraries into a separate module and keep mcs with the bare minimum
 needed.

 In fact, even libraries as important as Mono.ZeroConf that have been
 under development for more than a year are not part of mcs today.

I did not notice such posts on Mono-dev, but as you might guess this  
move in general has my support, it would greatly speed up the build  
process from SVN.
It is only unfortunate that this patch has blocked my working copy and  
further work on this for two weeks just to be told clearly now that  
you're not interested in including it in mcs/ as-is. I had read that  
you'd rather have classes implemented throwing  
NotImplementedExceptions than not having them implemented at all, so  
providing a fully implemented missing assembly seemed like a nice and  
easy way to contribute back to the Mono community... turns out not to  
be so straightforward.

The downside of moving STP elsewhere is two-fold:
* Providing such a minimalistic implementation inside mcs/ would have  
got the assembly/API into the next release, deploying it and enabling  
people to start developing against it.
* And the ECMA/System.* nature of this assembly should enable us to  
subsequently replace the initial implementation without users having  
to redirect any strongly versioned references via .config file for  
each application.

 We can offer you the hosting space as well (similar to what we do with
 Cocoa#) and an svn account, and when code depends on it we could  
 decide
 where it goes into mcs or olive.

Mono.ZeroConf, Cocoa-sharp and all the others are not ECMA assemblies  
and thus much easier to build.
I do have an account, so if likely we have to duplicate parts of  
Mono's build system then some place in SVN might still be reasonable  
for tracking changes, whether a personal branch or somewhere in trunk.  
For now I have imported the non-olive code into a new local  
repository; if you decide on where you'd like to have what, I could  
look into exporting/importing something in early January.

Andreas
___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list


Re: [Mono-dev] [PATCH] System.Threading.Parallel

2007-12-24 Thread Marek Safar
Hello,
 This patch seems independent of Microsoft's new parallel library, 
 and the extensible way of implementing it I suggested on another 
 thread would likely enable us to share backends between both 
 libraries. That part is not implemented yet, I'd like to have a 
 working base revision first, which this patch is intended as. Would 
 be great if we could get something in before Christmas, then I can 
 work on the next gen between the years before I start my number 
 crunching in January.
 If you are going to share anything between this library and 
 ParallelExtensions then the code should go to olive repository as we 
 maintain CTP or experimental libraries there.

 Not sure I got you right: Attached is a draft patch against olive for 
 the Parallel Extensions (don't have a Microsoft .NET 3.5 environment 
 to test or even browse its documentation in, there is none on the Web 
 except two MSDN Magazine articles).
How is it related to 3.5 ?


 To share code between olive/ and mcs/, the shared code will have to go 
 into mcs/, otherwise it would not be usable for STP there, as olive/ 
 is optional.
 The alternative would be to move STP outside mcs/ but that would limit 
 its deployment and usefulness (and I wouldn't know how to build it 
 correctly :).
My opinion is that both components are optional and should go to olive 
repository until they mature enough.


Marek
___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list


Re: [Mono-dev] [PATCH] System.Threading.Parallel

2007-12-24 Thread Andreas Färber
Hello,

Am 24.12.2007 um 13:13 schrieb Marek Safar:

 Attached is a draft patch against olive for the Parallel Extensions  
 (don't have a Microsoft .NET 3.5 environment to test or even browse  
 its documentation in, there is none on the Web except two MSDN  
 Magazine articles).
 How is it related to 3.5 ?

The article I puzzled these bits and pieces together from says PE  
support 3.5+ only. As you can see in the patch, it relies on  
System.Core.dll, which to my knowledge was not in 2.0.


 To share code between olive/ and mcs/, the shared code will have to  
 go into mcs/, otherwise it would not be usable for STP there, as  
 olive/ is optional.
 The alternative would be to move STP outside mcs/ but that would  
 limit its deployment and usefulness (and I wouldn't know how to  
 build it correctly :).
 My opinion is that both components are optional and should go to  
 olive repository until they mature enough.

Sure they are optional, just like all the ADO.NET providers in mcs/  
which cannot even be disabled during bootstrap. STP on the other hand  
(unlike PE) is part of the ECMA standard, and, thank you very much, I  
have spent a lot of time and effort making this initial implementation  
mature enough. Nobody has spotted anything in my code that was not  
mature.

While you are suddenly changing your mind here (I had asked about that  
in the first place!) while still discussing this simplesafe, self- 
contained initial implementation, I am losing time I would rather  
spend with non-mature advancedexperimental implementations thereof  
and with my applications using it. So if you don't want it, please  
don't waste my time, I'll have to version it in another repository to  
continue my work, just like Cocoa-sharq. Sad thing really.

Merry Christmas anyway.

Andreas
___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list


Re: [Mono-dev] [PATCH] System.Threading.Parallel

2007-12-24 Thread Miguel de Icaza
Hello Andreas,

 While you are suddenly changing your mind here (I had asked about that  
 in the first place!) while still discussing this simplesafe, self- 
 contained initial implementation, I am losing time I would rather  
 spend with non-mature advancedexperimental implementations thereof  
 and with my applications using it.

Am not sure that I we have known where this code would go, as I stated
to you in an email on December 11th:

If you have an implementation, we would not have a problem
bundling it.  The question is on which assembly it goes.

There is some extra background in the email regarding this particular
assembly.

 So if you don't want it, please  
 don't waste my time, I'll have to version it in another repository to  
 continue my work, just like Cocoa-sharq. Sad thing really.

A separate repository is usually a good idea to let libraries mature, as
I mentioned on my emails, the ECMA System.Threading.Parallel was
submitted by Intel, but as far as we know, no implementation was ever
tested on real applications, so it avoided the entire refining cycle.

As a matter of policy, we have had libraries developed externally for
months (or even years) before they went into mcs.   System.Core and
Cecil are two examples.

But also, we are trying hard to reduce the number of assemblies that we
ship (there are numerous posts on this subject elsewhere), but the basic
problem is that mcs has become too large and bugs in a an area require
releasing the entire Mono to fix those problems.   

And today we suffer from various early mistakes when plenty of libraries
made it into mcs,  We now regard shipping inside mcs as a liability, and
have even initiated the planning to split out all the Microsoft-specific
libraries into a separate module and keep mcs with the bare minimum
needed.

In fact, even libraries as important as Mono.ZeroConf that have been
under development for more than a year are not part of mcs today.

We can offer you the hosting space as well (similar to what we do with
Cocoa#) and an svn account, and when code depends on it we could decide
where it goes into mcs or olive.

Miguel.
___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list


Re: [Mono-dev] [PATCH] System.Threading.Parallel

2007-12-24 Thread Miguel de Icaza

 So given that the two do not conflict I see three options:
 - add System.Threading.Parallel.ParallelEnvironment to corlib and  
 conditionally depend on its presence (similar to now), or

This is not likely going to happen, as code compiled on Mono would not
run on .NET.   We have avoided modifying the public API exposed for the
sake of portability.

This needs to be a standalone assembly so that software can be used on
Linux and Unix.  As for helper methods, that am not too concerned about,
the number of processors at this point is something that Mono does not
do much with, so the whole policy can be included in this new assembly.

Miguel
___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list


Re: [Mono-dev] [PATCH] System.Threading.Parallel

2007-12-23 Thread Andreas Färber

Am 23.12.2007 um 11:44 schrieb Andreas Färber:

 Hello,

 Am 22.12.2007 um 23:49 schrieb Marek Safar:

 ECMA_PARALLEL_SUPPORT is not being defined anywhere, should I  
 better use #if 0 to make it more obvious?
 Yes, #if 0 is more obvious.


Actually this breaks compilation:

System.Threading.Parallel/ParallelFor.cs(51,1): error CS1517: Invalid  
preprocessor directive
System.Threading.Parallel/ParallelFor.cs(51,1): error CS1025: Single- 
line comment or end-of-line expected
System.Threading.Parallel/ParallelForEach.cs(53,1): error CS1517:  
Invalid preprocessor directive
System.Threading.Parallel/ParallelForEach.cs(53,1): error CS1025:  
Single-line comment or end-of-line expected
System.Threading.Parallel/ParallelWhile.cs(53,1): error CS1517:  
Invalid preprocessor directive
System.Threading.Parallel/ParallelWhile.cs(53,1): error CS1025: Single- 
line comment or end-of-line expected
Compilation failed: 6 error(s), 0 warnings

Any alternatives? (In C this works...)

Andreas
___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list


Re: [Mono-dev] [PATCH] System.Threading.Parallel

2007-12-23 Thread Jonathan Chambers
Hello,

#if false

should work.

Thanks,
Jonathan

On Dec 23, 2007 11:01 AM, Andreas Färber [EMAIL PROTECTED] wrote:


 Am 23.12.2007 um 11:44 schrieb Andreas Färber:

  Hello,
 
  Am 22.12.2007 um 23:49 schrieb Marek Safar:
 
  ECMA_PARALLEL_SUPPORT is not being defined anywhere, should I
  better use #if 0 to make it more obvious?
  Yes, #if 0 is more obvious.
 

 Actually this breaks compilation:

 System.Threading.Parallel/ParallelFor.cs(51,1): error CS1517: Invalid
 preprocessor directive
 System.Threading.Parallel/ParallelFor.cs(51,1): error CS1025: Single-
 line comment or end-of-line expected
 System.Threading.Parallel/ParallelForEach.cs(53,1): error CS1517:
 Invalid preprocessor directive
 System.Threading.Parallel/ParallelForEach.cs(53,1): error CS1025:
 Single-line comment or end-of-line expected
 System.Threading.Parallel/ParallelWhile.cs(53,1): error CS1517:
 Invalid preprocessor directive
 System.Threading.Parallel/ParallelWhile.cs(53,1): error CS1025: Single-
 line comment or end-of-line expected
 Compilation failed: 6 error(s), 0 warnings

 Any alternatives? (In C this works...)

 Andreas
 ___
 Mono-devel-list mailing list
 Mono-devel-list@lists.ximian.com
 http://lists.ximian.com/mailman/listinfo/mono-devel-list

___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list


Re: [Mono-dev] [PATCH] System.Threading.Parallel

2007-12-23 Thread Andreas Färber

Hey,

Am 23.12.2007 um 17:06 schrieb Jonathan Chambers:


#if false

should work.


Thanks, should have read the C# spec *before* posting ... just found  
that nice feature!


Updated patch attached.

Andreas


System.Threading.Parallel-2007-12-23b.diff
Description: Binary data




On Dec 23, 2007 11:01 AM, Andreas Färber [EMAIL PROTECTED]  
wrote:


Am 23.12.2007 um 11:44 schrieb Andreas Färber:

 Hello,

 Am 22.12.2007 um 23:49 schrieb Marek Safar:

 ECMA_PARALLEL_SUPPORT is not being defined anywhere, should I
 better use #if 0 to make it more obvious?
 Yes, #if 0 is more obvious.


Actually this breaks compilation:

System.Threading.Parallel/ParallelFor.cs(51,1): error CS1517: Invalid
preprocessor directive
System.Threading.Parallel/ParallelFor.cs(51,1): error CS1025: Single-
line comment or end-of-line expected
System.Threading.Parallel/ParallelForEach.cs(53,1): error CS1517:
Invalid preprocessor directive
System.Threading.Parallel/ParallelForEach.cs(53,1): error CS1025:
Single-line comment or end-of-line expected
System.Threading.Parallel/ParallelWhile.cs(53,1): error CS1517:
Invalid preprocessor directive
System.Threading.Parallel/ParallelWhile.cs(53,1): error CS1025:  
Single-

line comment or end-of-line expected
Compilation failed: 6 error(s), 0 warnings

Any alternatives?


___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list


Re: [Mono-dev] [PATCH] System.Threading.Parallel

2007-12-23 Thread Andreas Färber

Am 21.12.2007 um 15:23 schrieb Marek Safar:

 I would not add this to corlib as it may cause problems later when MS
 introduces better Parallel library support.

 To completely support the Parallel Library, in addition the
 ParallelEnvironment class would need to be implemented inside corlib.
 But with Microsoft not having supported it, relying on its presence
 would keep users from deploying this assembly to .NET. The proposed
 implementation therefore uses conditional sections where
 ParallelEnvironment should theoretically be used.

It seems Microsoft is using one or multiple instances of  
System.Concurrency.TaskManager to control the number of concurrent  
threads. ParallelEnvironment.MaxThreads roughly corresponds to the  
global TaskManager's .MaxConcurrentThreads.

 Adding that class to corlib might require a new icall for
 ParallelEnvironment,RecommendedMaxThreads (to discover the number of
 processors/cores)

I found that System.Environment.ProcessorCount already returns the  
number of processors or cores. Therefore no icall would be required,  
the scaling could be done in managed code.

So given that the two do not conflict I see three options:
- add System.Threading.Parallel.ParallelEnvironment to corlib and  
conditionally depend on its presence (similar to now), or
- add a public Mono.Threading.Parallel.ParallelEnvironment to our  
System.Threading.Parallel.dll and (conditionally) use this one  
instead, or
- add a (System|Mono).Threading.Parallel.ParallelEnvironment in a  
separate, Mono-specific assembly

Without the class in corlib, any source/IL code conformant to the  
standard would break.
With the class correctly in corlib, code using it cannot be deployed  
to non-conforming Microsoft .NET.
With the class in a Mono-specific assembly, code using this class is  
not standard-conformant.
With a Mono-specific class in SPT, code using this class is no longer  
standard-conformant.
With a Mono-specific class in a Mono-specific assembly, runtime  
behavior is undefined for any other SPT implementation.

I'd favor having it in corlib for completeness and providing a custom  
frontend in a Mono assembly; that could then check for Parallel  
support via Reflection and set/get the value either there or locally.  
Mono's SPT could then rely on its deployable companion assembly as an  
Adapter to work on both Mono and any other runtime.

Andreas
___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list


Re: [Mono-dev] [PATCH] System.Threading.Parallel

2007-12-23 Thread Andreas Färber


Am 22.12.2007 um 23:49 schrieb Marek Safar:

This patch seems independent of Microsoft's new parallel library,  
and the extensible way of implementing it I suggested on another  
thread would likely enable us to share backends between both  
libraries. That part is not implemented yet, I'd like to have a  
working base revision first, which this patch is intended as. Would  
be great if we could get something in before Christmas, then I can  
work on the next gen between the years before I start my number  
crunching in January.
If you are going to share anything between this library and  
ParallelExtensions then the code should go to olive repository as we  
maintain CTP or experimental libraries there.


Not sure I got you right: Attached is a draft patch against olive for  
the Parallel Extensions (don't have a Microsoft .NET 3.5 environment  
to test or even browse its documentation in, there is none on the Web  
except two MSDN Magazine articles).


System.Concurrency-2007-12-23.dll
Description: application/msdownload



To share code between olive/ and mcs/, the shared code will have to go  
into mcs/, otherwise it would not be usable for STP there, as olive/  
is optional.
The alternative would be to move STP outside mcs/ but that would limit  
its deployment and usefulness (and I wouldn't know how to build it  
correctly :).


Andreas___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list


Re: [Mono-dev] [PATCH] System.Threading.Parallel

2007-12-22 Thread Andreas Färber

Am 22.12.2007 um 03:11 schrieb Miguel de Icaza:

 My suggestion is that this library should stay out of mscorlib,  
 allowing
 this code to be reused by those that might have an interest for it on
 Windows (so this library would also be usable by folks on the Windows
 platforms if they chose to do that).

Sure, it does so and, as previously mentioned to you, I intend to keep  
it that way. So is the patch okay then, or do you require any specific  
changes before committing it?

Andreas

___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list


Re: [Mono-dev] [PATCH] System.Threading.Parallel

2007-12-21 Thread Marek Safar
Hi Andreas,

It seems to me your diff is not complete as some files rely on working 
copy of files which don't exist.

I would not add this to corlib as it may cause problems later when MS 
introduces better Parallel library support.

Marek

 Attached is a patch adding the System.Threading.Parallel assembly, an 
 optional part of the ECMA-335 standard (Annex G). The initial 
 implementation is single-threaded, as permitted by the standard. All 
 my test cases pass. Please review.

 Am I correct to use the ecma.pub key for this ECMA-only assembly?

 And am I seeing correctly that the ECMA docs do not document protected 
 methods? I used internal protected to be on the safe side for now.

 There are some comments inline, documenting where I needed to 
 interpret the standard. For instance, the standard says an exception 
 should be rethrown in EndRun, which I am doing now, but this of course 
 hides the original source of the exception, so maybe we should not 
 rethrow it but throw some new exception with it as InnerException?


 To completely support the Parallel Library, in addition the 
 ParallelEnvironment class would need to be implemented inside corlib. 
 But with Microsoft not having supported it, relying on its presence 
 would keep users from deploying this assembly to .NET. The proposed 
 implementation therefore uses conditional sections where 
 ParallelEnvironment should theoretically be used.

 Adding that class to corlib might require a new icall for 
 ParallelEnvironment,RecommendedMaxThreads (to discover the number of 
 processors/cores), and if so I assume the corlib version would need to 
 be incremented?

 Thanks,

 Andreas



 

 ___
 Mono-devel-list mailing list
 Mono-devel-list@lists.ximian.com
 http://lists.ximian.com/mailman/listinfo/mono-devel-list
   

___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list


Re: [Mono-dev] [PATCH] System.Threading.Parallel

2007-12-21 Thread Andreas Färber
Hi Marek,

Thanks for the comments. I do not see such an example in my diff: I  
have not modified corlib yet, just svn-copied and modified the  
relevant build files from another assembly and added my own, see  
below. ECMA_PARALLEL_SUPPORT is not being defined anywhere, should I  
better use #if 0 to make it more obvious?

svn status w/o irrelevant parts:
M  class/Makefile
?  class/System.Threading.Parallel/TestResult-NET_2_0.log
?  class/System.Threading.Parallel/ 
System.Threading.Parallel_test_NET_2_0.dll.mdb
A  class/System.Threading.Parallel
A  class/System.Threading.Parallel/Assembly
A  +   class/System.Threading.Parallel/Assembly/AssemblyInfo.cs
A  class/System.Threading.Parallel/Assembly/ChangeLog
A  +   class/System.Threading.Parallel/ 
System.Threading.Parallel.dll.sources
A  class/System.Threading.Parallel/Test
A  class/System.Threading.Parallel/Test/System.Threading.Parallel
A  class/System.Threading.Parallel/Test/System.Threading.Parallel/ 
ChangeLog
A  class/System.Threading.Parallel/Test/System.Threading.Parallel/ 
ParallelForTest.cs
A  class/System.Threading.Parallel/Test/System.Threading.Parallel/ 
ParallelForEachTest.cs
A  class/System.Threading.Parallel/Test/System.Threading.Parallel/ 
ParallelWhileTest.cs
A  class/System.Threading.Parallel/System.Threading.Parallel
A  class/System.Threading.Parallel/System.Threading.Parallel/ 
ParallelFor.cs
A  class/System.Threading.Parallel/System.Threading.Parallel/ 
ChangeLog
A  class/System.Threading.Parallel/System.Threading.Parallel/ 
ParallelForEach.cs
A  class/System.Threading.Parallel/System.Threading.Parallel/ 
ParallelWhile.cs
A  class/System.Threading.Parallel/System.Threading.Parallel/ 
ParallelLoop.cs
A  class/System.Threading.Parallel/ChangeLog
A  +   class/System.Threading.Parallel/Makefile
A  class/System.Threading.Parallel/ 
System.Threading.Parallel_test.dll.sources
M  class/ChangeLog

This patch seems independent of Microsoft's new parallel library, and  
the extensible way of implementing it I suggested on another thread  
would likely enable us to share backends between both libraries. That  
part is not implemented yet, I'd like to have a working base revision  
first, which this patch is intended as. Would be great if we could get  
something in before Christmas, then I can work on the next gen between  
the years before I start my number crunching in January.

Concerning corlib, Dennis posted a list of namespaces affected by  
Microsoft's new library, and ParallelEnvironment would not seem to  
conflict with that. More than that I do not know. Personally, I'd  
rather stick with the published ECMA standard and a superior Mono  
implementation than with some evolving Microsoft CTP potentially  
leading to IPR questions at some point. Virtually nobody uses their  
Compute Cluster Edition anyway.

Andreas


Am 21.12.2007 um 15:23 schrieb Marek Safar:

 Hi Andreas,

 It seems to me your diff is not complete as some files rely on  
 working copy of files which don't exist.

 I would not add this to corlib as it may cause problems later when  
 MS introduces better Parallel library support.

 Marek

 Attached is a patch adding the System.Threading.Parallel assembly,  
 an optional part of the ECMA-335 standard (Annex G). The initial  
 implementation is single-threaded, as permitted by the standard.  
 All my test cases pass. Please review.

 Am I correct to use the ecma.pub key for this ECMA-only assembly?

 And am I seeing correctly that the ECMA docs do not document  
 protected methods? I used internal protected to be on the safe  
 side for now.

 There are some comments inline, documenting where I needed to  
 interpret the standard. For instance, the standard says an  
 exception should be rethrown in EndRun, which I am doing now, but  
 this of course hides the original source of the exception, so maybe  
 we should not rethrow it but throw some new exception with it as  
 InnerException?


 To completely support the Parallel Library, in addition the  
 ParallelEnvironment class would need to be implemented inside  
 corlib. But with Microsoft not having supported it, relying on its  
 presence would keep users from deploying this assembly to .NET. The  
 proposed implementation therefore uses conditional sections where  
 ParallelEnvironment should theoretically be used.

 Adding that class to corlib might require a new icall for  
 ParallelEnvironment,RecommendedMaxThreads (to discover the number  
 of processors/cores), and if so I assume the corlib version would  
 need to be incremented?

 Thanks,

 Andreas



 

 ___
 Mono-devel-list mailing list
 Mono-devel-list@lists.ximian.com
 http://lists.ximian.com/mailman/listinfo/mono-devel-list



___
Mono-devel-list mailing list

Re: [Mono-dev] [PATCH] System.Threading.Parallel

2007-12-21 Thread Miguel de Icaza
Hello,

 Concerning corlib, Dennis posted a list of namespaces affected by  
 Microsoft's new library, and ParallelEnvironment would not seem to  
 conflict with that. More than that I do not know. Personally, I'd  
 rather stick with the published ECMA standard and a superior Mono  
 implementation than with some evolving Microsoft CTP potentially  
 leading to IPR questions at some point. Virtually nobody uses their  
 Compute Cluster Edition anyway.

Well, the problem with System.Threading.Parallel is that it has never
been used in practice as far as I know.   This was an API designed by
Intel and submitted to ECMA, but as far as am aware, it did not go
through the regular process of API usability testing or got any use
beyond its definition.

The CTP process (or any other process) in which APIs are implemented and
then refined based on actual usage patterns did not benefit this
library.

My suggestion is that this library should stay out of mscorlib, allowing
this code to be reused by those that might have an interest for it on
Windows (so this library would also be usable by folks on the Windows
platforms if they chose to do that).

miguel.

___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list


Re: [Mono-dev] [PATCH] System.Threading.Parallel

2007-12-20 Thread Andreas Färber

Am 13.12.2007 um 23:34 schrieb Andreas Färber:

 Attached is a patch adding the System.Threading.Parallel assembly,  
 an optional part of the ECMA-335 standard (Annex G). The initial  
 implementation is single-threaded, as permitted by the standard. All  
 my test cases pass. Please review.

 Am I correct to use the ecma.pub key for this ECMA-only assembly?

 And am I seeing correctly that the ECMA docs do not document  
 protected methods? I used internal protected to be on the safe  
 side for now.

 There are some comments inline, documenting where I needed to  
 interpret the standard. For instance, the standard says an exception  
 should be rethrown in EndRun, which I am doing now, but this of  
 course hides the original source of the exception, so maybe we  
 should not rethrow it but throw some new exception with it as  
 InnerException?

No comments for one week? Can I go ahead and commit the initial  
version then?

Andreas
___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list