Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

(WIP) Generic DataFrame Math #6664

Open
wants to merge 42 commits into
base: feature/4.0
Choose a base branch
from

Conversation

JakeRadMSFT
Copy link
Contributor

No description provided.

@ghost ghost assigned JakeRadMSFT May 9, 2023
@ericstj ericstj requested a review from tannergooding May 9, 2023 15:54

using System.Runtime.Versioning;

[assembly: RequiresPreviewFeatures]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this because you're targeting .NET 6?

The API surface of the generic math interfaces changed between 6 and 7 (such as moving all interfaces into namespace System.Numerics) and it would likely be better to keep this targeting 7/8

Copy link
Contributor Author

@JakeRadMSFT JakeRadMSFT May 10, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah - figured targeting the LTS made sense. @ericstj Thoughts?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think if we're making this change, we'd want to target .NET 8 (LTS) and plan to ship it around or after November

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The approach we have recently been taking with NuGet packages here and in dotnet/runtime is to retain support for in-support frameworks. This is better than the previous approach which was never drop support for anything due to compatibility. .NET 6 remains in support until November of 2024 so our current plan would be to keep supporting it until then.

ML.NET's servicing story so far has been "update to latest" - we only maintain one active release branch. I could imagine a change where we start dropping in-support frameworks from our nuget package, but in conjunction with such a change we'd need to maintain more servicing branches, and as a result servicing changes would become more expensive since we'd need to port them between many codebases.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this would be a special consideration for .NET 6 vs .NET 8 and won't be "normal" as we don't often get features as big as generic math.

So we'd need to maintain a servicing branch for 6, but then wouldn't need to the same for 8 vs 10 without some other feature that is as meaningfully impactful

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In this case what's the benefit from not supporting 6.0? Is it just removing that attribute or is there more to it?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There were concrete breaking changes to the API surface of the generic math feature between .NET 6 and .NET 7

We'd be maintaining two copies of the generic math code, one in preview and one "feature complete" as well as dealing with any subtle bugs or missing support in the broader product from it being an early preview.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR also removes support for netstandard2.0 and full .Net frameworks (like 4.8, which is as far as I undertans also LTS). The company I worked before, used DataFrame on .Net 4.6.2 and they didn't have plan to migrate to .net core in the nearest future.
Could you please make at least one more release of Microsoft.Data.Analysis nuget targeting netstandart2.0 for such clients before moving to ,Net 8 (6) only?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@asmirnov82 we're still figuring out the timelines for this change but it will be after the next release.

Thanks for working with us!

Take jakerad/generic_math changes without conflicts
# Conflicts:
#	src/Microsoft.Data.Analysis/DataFrame.IO.cs
#	test/Microsoft.Data.Analysis.Tests/Microsoft.Data.Analysis.Tests.csproj
# Conflicts:
#	src/Microsoft.Data.Analysis/DataFrameColumnCollection.cs
#	test/Microsoft.Data.Analysis.Tests/DataFrameTests.cs
# Conflicts:
#	src/Microsoft.Data.Analysis/DataFrameColumnCollection.cs
# Conflicts:
#	src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.cs
# Conflicts:
#	src/Microsoft.Data.Analysis/BooleanDataFrameColumn.cs
#	src/Microsoft.Data.Analysis/ByteDataFrameColumn.cs
#	src/Microsoft.Data.Analysis/CharDataFrameColumn.cs
#	src/Microsoft.Data.Analysis/DateTimeDataFrameColumn.cs
#	src/Microsoft.Data.Analysis/DecimalDataFrameColumn.cs
#	src/Microsoft.Data.Analysis/DoubleDataFrameColumn.cs
#	src/Microsoft.Data.Analysis/Int16DataFrameColumn.cs
#	src/Microsoft.Data.Analysis/Int32DataFrameColumn.cs
#	src/Microsoft.Data.Analysis/Int64DataFrameColumn.cs
#	src/Microsoft.Data.Analysis/SByteDataFrameColumn.cs
#	src/Microsoft.Data.Analysis/SingleDataFrameColumn.cs
#	src/Microsoft.Data.Analysis/UInt16DataFrameColumn.cs
#	src/Microsoft.Data.Analysis/UInt32DataFrameColumn.cs
#	src/Microsoft.Data.Analysis/UInt64DataFrameColumn.cs
#	test/Microsoft.Data.Analysis.Tests/DataFrame.IOTests.cs
# Conflicts:
#	src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.BinaryOperations.tt
# Conflicts:
#	src/Microsoft.Data.Analysis/PrimitiveDataFrameColumnArithmetic.cs
#	src/Microsoft.Data.Analysis/PrimitiveDataFrameColumnArithmetic.tt
# Conflicts:
#	src/Microsoft.Data.Analysis/PrimitiveDataFrameColumnArithmetic.cs
#	src/Microsoft.Data.Analysis/PrimitiveDataFrameColumnArithmetic.tt
@JakeRadMSFT JakeRadMSFT changed the base branch from main to feature/4.0 June 25, 2023 06:52
JakeRadMSFT and others added 10 commits June 27, 2023 15:01
# Conflicts:
#	src/Microsoft.Data.Analysis/DataFrameColumn.BinaryOperations.tt
#	src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.BinaryOperations.cs
#	src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.BinaryOperations.tt
# Conflicts:
#	src/Microsoft.Data.Analysis/PrimitiveDataFrameColumn.Computations.tt
#	src/Microsoft.Data.Analysis/PrimitiveDataFrameColumnComputations.cs
#	src/Microsoft.Data.Analysis/PrimitiveDataFrameColumnComputations.tt
# Conflicts:
#	src/Microsoft.Data.Analysis/PrimitiveDataFrameColumnComputations.cs
#	src/Microsoft.Data.Analysis/PrimitiveDataFrameColumnComputations.tt
…eral value buffers)

# Conflicts:
#	src/Microsoft.Data.Analysis/PrimitiveDataFrameColumnArithmetic.cs
#	src/Microsoft.Data.Analysis/PrimitiveDataFrameColumnArithmetic.tt
Integrated 6733 Jakerad generic math
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants