You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@reef.apache.org by Shravan Matthur Narayanamurthy <sh...@gmail.com> on 2016/09/02 20:12:18 UTC

.Net Core Compatibility

Hello All,

As you might have noticed, there is work in REEF-334
<https://issues.apache.org/jira/browse/REEF-334> that is trying to enable
use of REEF.Net on linux by making the REEF.Net code CoreCLR compliant.

So far we have fixed a few issues by replacing certain usages and patterns
in REEF.Net with usages that are both core and framework compliant.
However, there is one issue with this process. Compliance achieved so far
can regress due to other commits which are not geared towards core
compliance.

I want to pose this problem to the members of the group to get a good
handle on this situation. One idea that has been floating around is to make
the .Net Core portability analyzer a part of our build infrastructure and
check for regressions. Another is to create a new solution targeted for
CoreCLR and including the files that have been deemed compliant and make
building this solution a step in our build infrastructure.

Will really appreciate your help with other principled solutions to this
problem

Thanks,
--Shravan

Re: .Net Core Compatibility

Posted by Markus Weimer <ma...@weimo.de>.
On Wed, Sep 7, 2016 at 11:17 AM, Mariia Mykhailova
<ma...@microsoft.com> wrote:
>
> Alternatively we could have a dedicated build job in AppVeyor which focuses on running portability analyzer and reports the number of violations, and this number must not increase for each PR.


That is what I was thinking. Right now, we have neither one issue
completely resolved nor one project which builds on CoreCLR. Hence,
committing to a monotonic decrease in the overall violation count
would be most feasible. We can also maintain the current number of
violations in the repository and decrease it with every commit that
aims to fix issues. That way, we make our bound on CoreCLR
incompatibilities ever tighter.

WDYT?

Markus

RE: .Net Core Compatibility

Posted by Mariia Mykhailova <ma...@microsoft.com>.
When we worked on Checkstyle/Findbugs issues, we enabled checks which we've already fixed in Checkstyle configuration, and they became build breaks for existing build process, while other violations were still allowed. 

Ideally we should have something similar here, a step of the build which runs a subset of checks and fails if any check which is already fixed is violated. Does CoreCLR portability analyzer support such use? Such approach would also require fixing issues not per-project but per-issue (or configuring different sets of checks for different projects, but I think this might be more complicated, we did it for Checkstyle only for one final check)

Alternatively we could have a dedicated build job in AppVeyor which focuses on running portability analyzer and reports the number of violations, and this number must not increase for each PR.

-Mariia

-----Original Message-----
From: Markus Weimer [mailto:markus@weimo.de] 
Sent: Wednesday, September 7, 2016 8:33 AM
To: dev@reef.apache.org
Subject: Re: .Net Core Compatibility

On 2016-09-02 1:12 PM, Shravan Matthur Narayanamurthy wrote:
> As you might have noticed, there is work in REEF-334 that is trying to 
> enable use of REEF.Net on linux by making the REEF.Net code CoreCLR 
> compliant.

Much appreciated!

> One idea that has been floating around is to make the .Net Core 
> portability analyzer a part of our build infrastructure and check for 
> regressions.

This should be doable. Does the analyzer need to be installed or can we e.g. make a MBSBuild task to download the analyzer to our build machines and apply it?

> Another is to create a new solution targeted for CoreCLR and including 
> the files that have been deemed compliant and make building this 
> solution a step in our build infrastructure.

This should, in principle, be better. But maintaining multiple build files could be more of a challenge than is worth it. Maybe we do that once full sub-projects compile on CoreCLR? I believe for this to work, all REEF devs will have to also install CoreCLR on their machines, right?

Markus

Re: .Net Core Compatibility

Posted by Markus Weimer <ma...@weimo.de>.
On 2016-09-02 1:12 PM, Shravan Matthur Narayanamurthy wrote:
> As you might have noticed, there is work in REEF-334 that is trying
> to enable use of REEF.Net on linux by making the REEF.Net code
> CoreCLR compliant.

Much appreciated!

> One idea that has been floating around is to make the .Net Core
> portability analyzer a part of our build infrastructure and check
> for regressions.

This should be doable. Does the analyzer need to be installed or can we
e.g. make a MBSBuild task to download the analyzer to our build machines
and apply it?

> Another is to create a new solution targeted for CoreCLR and
> including the files that have been deemed compliant and make
> building this solution a step in our build infrastructure.

This should, in principle, be better. But maintaining multiple build 
files could be more of a challenge than is worth it. Maybe we do that 
once full sub-projects compile on CoreCLR? I believe for this to work, 
all REEF devs will have to also install CoreCLR on their machines, right?

Markus

Re: .Net Core Compatibility

Posted by Markus Weimer <ma...@weimo.de>.
On 2016-09-07 8:28 AM, Byung-Gon Chun wrote:
> Hi Shravan,

He's on a well deserved vacation, let me chime in :)

> Any update on this topic?
> Does CoreCLR include all the functionalities we need for REEF .Net?

So far, it looks like it. Changes fall into three categories:

(1) Trivial changes where we have to call a different API available in 
both CoreCLR and .NET 4.5 (the version we depend on right now)

(2) Changes where we have to call a different API available in both 
CoreCLR and .NET *4.6*. We can attack those once our current users give 
the green light on their clusters being upgraded to that .NET Version.

(3) Hairy changes where .NET and CoreCLR differ. The bridge is one of 
them, but there have been others. We have to either re-architect or 
enter the world of conditional compilation.

So far, work has been done in category (1), moving to (2) as soon as we 
run out of issues there.

Another major obstacle are our dependencies and their availability on 
CoreCLR, hence the push to update Newtonsoft JSON and drop Avro.

Markus

Re: .Net Core Compatibility

Posted by Byung-Gon Chun <bg...@gmail.com>.
Hi Shravan,

Any update on this topic?
Does CoreCLR include all the functionalities we need for REEF .Net?

Thanks.
-Gon

On Fri, Sep 2, 2016 at 1:12 PM, Shravan Matthur Narayanamurthy <
shravanmn@gmail.com> wrote:

> Hello All,
>
> As you might have noticed, there is work in REEF-334
> <https://issues.apache.org/jira/browse/REEF-334> that is trying to enable
> use of REEF.Net on linux by making the REEF.Net code CoreCLR compliant.
>
> So far we have fixed a few issues by replacing certain usages and patterns
> in REEF.Net with usages that are both core and framework compliant.
> However, there is one issue with this process. Compliance achieved so far
> can regress due to other commits which are not geared towards core
> compliance.
>
> I want to pose this problem to the members of the group to get a good
> handle on this situation. One idea that has been floating around is to make
> the .Net Core portability analyzer a part of our build infrastructure and
> check for regressions. Another is to create a new solution targeted for
> CoreCLR and including the files that have been deemed compliant and make
> building this solution a step in our build infrastructure.
>
> Will really appreciate your help with other principled solutions to this
> problem
>
> Thanks,
> --Shravan
>



-- 
Byung-Gon Chun