Age | Commit message (Collapse) | Author |
|
* Update UAP targeting pack
To fix the flow from CoreCLR and CoreFX into TFS, update the targeting pack with a version of System.Private.CoreLib that has an updated signature for Stream.WriteAsync. This should be sufficient to re-enable uapaot builds so we can get a new set of uap packages.
* Revert "Disable uapaot builds on several projects"
This reverts commit ebe14686a89d26d1d34d359f7a636d6e9a36a624.
|
|
|
|
|
|
This commit does several things:
- Exposes the new `ValueTask` extensibility model being added in coreclr. The ValueTask-related files will separately be mirrored over to corefx to enable the netstandard build of System.Threading.Tasks.Extensions.
- Adapts all `Stream`-derived types to return `ValueTask` instead of `Task` from `WriteAsync`.
- Changes the new `WebSocket` `SendAsync` method to return `ValueTask` instead of `Task`, and updates the `ManagedWebSocket` implementation accordingly. Most `SendAsync`s on `ManagedWebSocket` should now return a `ValueTask` that's either completed synchronously (no allocation) or using a pooled object. It now uses the underlying transport's new `WriteAsync` overload that returns `ValueTask`.
- Switches more uses of `ReadAsync` and `WriteAsync` over to the new overloads, including in Process, DeflateStream, BrotliStream, File, HttpClient, SslStream, WebClient, BufferedStream, CryptoStream,
- Removed some unnecessary array clearing from various routines using ArrayPool (after the clearing was added we changed our minds and decided clearing was only necessary in very specific circumstances)
- Implements a custom `IValueTaskSource` in Socket, such that async receives and sends become allocation-free (ammortized). `NetworkStream` then inherits this functionality, such that its new `ReadAsync` and `WriteAsync` are also allocation-free (in the unbounded channel implementations; we can subsequently add it in for bounded).
- Implements a custom `IValueTaskSource` in System.Threading.Channels, such that reading and writing are ammortized allocation-free up to one concurrent reader and writer.
- A few random things I noticed as I was going through, e.g. missing ConfigureAwait, some incorrect synchronization in tests, etc.
- Adds a ton of new tests, mainly in System.Threading.Tasks.Extensions, System.Threading.Channels, and System.Net.Sockets.
|
|
|
|
|
|
|
|
Basic perf tests for ValueTasks.
|
|
|
|
Contributes to https://github.com/dotnet/corefx/issues/6185.
|
|
The APIs in System.Threading.Tasks.Extensions have been put inbox on
.NET Core 2.0 and UAp and also type-forwarded into System.Runtime. This
means the APIs in the contract can no longer version for the netstandard
reference. Any new API's have to be added to the platform specific reference
assembly.
This also updates the package to include the inbox placeholders for
netcoreapp and uap.
|
|
|
|
|
|
UpdateVSConfigurations (#24752)
* Fixed odbc configurations for compat package
* Run UpdateVSConfigurations
* Remove Default Configurations to help VS... comment from csproj's
* Remove from System.Buffers as well
|
|
|
|
Many library packages overlap with assemblies we include in our framework packages.
In the first release we handled this by preventing the library package from applying any
assets.
This becomes problematic if the reference assembly needs to version, and especially
if the library wants to add API. The new version will be greater than what was previously
shipped inbox, and we wouldn't want to restrict the new version just to future TFMs.
To address this problem I've made a couple fixes:
1. For packages which are shipping brand new API that's not present in desktop, we'll
omit any placeholders and allow conflict resolution to decide if the library package
or framework package should be used (based on version). In some cases this required
bringing some configurations into the package so that it could always be "up to date".
2. For packages which are just exposing API in desktop, and thus already tied/anchored
to netstandard versions, we'll freeze the reference assembly version for the non-desktop
builds. This ensures that the reference assembly will never move past the version that's
inbox in the framework package.
Update BuildToolsVersion to 2.0.0-prerelease-01931-01
|
|
|
|
|
|
ValueTask will be used/exposed by types in System.Runtime, so it also needs to be exposed from there. This also requires pulling down a few related types.
|
|
|
|
Primarily using expression-bodied members
|
|
* Move AssertExtensions to Corefx.Private.TestUtilities
* Update csprojs
* Fix Linq.Expressions uapaot build
|
|
|
|
* The GenerateReferenceAssembly target can be run as a manual step on a
project. When run, it produces a source code file <Assembly>.cs, in the
reference assembly folder for the library. This source file can be used
to compile an equivalent reference assembly.
* Use the target to generate reference assemblies for the following
libraries:
* System.Collections.Immutable
* System.Reflection.Metadata
* System.Threading.Tasks.Dataflow
* System.Threading.Tasks.Extensions
|
|
|
|
Reorder items so that pkgprojs have consistent alphabetical ordering:
- ProjectReference
- HarvestIncludePaths
- InboxOnTargetFramework
- SuppressMetaPackage
- ValidatePackageSuppression
|
|
|
|
Bulk update to AssertExtensions.Throws for AOT support. This doesn't disable Assert.Throws.
|
|
Now instead of Use*Key a project can instead define the assembly key
in the project (genreally the common dir.pops for a project) using
the AssemblyKey property. The accepted values are Open, ECMA, MSFT,
Test.
This change allows for a repo to set the default key they want to use
for projects. In corefx we have switched the default to use the Open
key instead of the old BuildTools default of MSFT key.
As part of this update we are explicitly setting the AssemblyKey in
all the library projects (although it is really only necessary for
projects that aren't the default).
Also with this change we are updating all the new libraries that have
not yet shipped stable (compared to our 1.1 release) and making them
use the Open key. Which means that for prerelease dependencies there
might be some binary breaking changes to consume.
The following libraries ahven't shipped so there key is being
changed from MSFT to Open:
Microsoft.XmlSerializer.Generator
System.CodeDom
System.Configuration.ConfigurationManager
System.Data.Odbc
System.DirectoryServices
System.DirectoryServices.AccountManagement
System.DirectoryServices.Protocols
System.IO.Ports
System.Json
System.Memory
System.Net.HttpListener
System.Net.Mail
System.Net.ServicePoint
System.Net.WebClient
System.Net.WebProxy
System.Private.Xml
System.Private.Xml.Linq
System.Security.Cryptography.Xml
System.Security.Permissions
System.Transactions.Local
System.Web.HttpUtility
|
|
Some packages were causing cycles due to the meta-package remapping for
NETStandard.Library and those packages being used in the implementation
closure of NETStandard.Library.
Disable the NETStandard.Library remapping in these packages.
I also noticed that S.R.M was getting an unbaselined dependency for a
portable profile dependency section which was causing issues when
restored on UAP10.0 without the UWP meta-package.
System.Security.Permissions was also missing support for UAP10.1 but it
was required to install due to Registry depending on it.
|
|
Re-enable packages for BuildAllConfigurations
|
|
|
|
Removes UseOpenKey and UseECMAKey conditions in projects because
they should always be set
|
|
|
|
|
|
* Enable tests to compile with netstandard
Most of the tests have netstandard configurations and it doesn't compile. the changes here is to fix the configurations and the tests to compile.
This is important step to get netfx tests compile too as we are in most of the time netfx fallback to netstandard configuration
The changes include some fixes to compile teh sources too.
* Fix System.Collections.Immutable
* update src configuration
* remove netstandard17 defines
* Split netcoreapp code to its own files
* Remove 17 from the test class name
|
|
Prepare uap package
|
|
Fix name of DocumenationFile so intellisense correctly builds
|
|
Fixes https://github.com/dotnet/corefx/issues/15823
|
|
The changes onclude some other minor clean up in the test project files
|
|
|
|
|
|
* Enable compiling the test projects against the configuration
The tests were compiled using the vertical configuration and not the best configuration picked from Configurations.props. this change is fix that and have all test projects configured accordingly.
This change ensuring netcoreapp runs successfully and we'll have another rounds later for other configurations like netfx, UAP...etc.
* Fix openssl test project on Linux distros
* Update the project configurations
* Update VS solution files
* update solution files
|
|
|
|
BuildConfigurations
|
|
Remove all cruft from projects related to building desktop configs which
now build in standard repo.
|
|
This fixes all src and ref projects to build when TargetGroup=netfx.
|
|
|
|
These changes enable TargetGroup=UAP to build completely.
|
|
After the change to use the appropriate references for a configuration
we needed to make sure that every library has a versionless targetgroup
so that it can build in the source build scenarios without requiring
external packages from NuGet.
For any library that is part of netstandard, its implementation should
not build against netstandard
For any library that is part of the imlpementation closure of netstandard,
its implementation should not build against netstandard (else we'd have cycles).
OpenSSL must keep its netstandard ref, however it has NETCoreApp specific API
dependencies. See https://github.com/dotnet/standard/issues/186. As such we
need to cross-compile both src and ref for NETCoreApp. I've moved the not-
supported assembly to be the 'netstandard' implementation.
|