Age | Commit message (Collapse) | Author |
|
Due to few recent updates to dotnet/standard (NETStandard 2.1) we had 40 apicompat issues.
Mostly copy-pasted from dotnet/corefx.
Didn't implement Cryptography stuff yet.
Checked all profiles.
Implements #14609
|
|
* System.IO, System.Data
* lots of small ns21 improvements
* More changes (System.Reflection.Emit)
* Add IEquatable to S.R.Emit types
* bump corefx
* fix unix build
* more NS21 changes
* more changes
* bump corefx
* Fix failing tests (Sockets)
* bump corefx
* tmp workaround
* move DispatchProxyGenerator to net_4_x
* Bump API snapshot submodule
* [csproj] Update project files
|
|
This PR still needs additional cleanup work to be ready to merge but it's getting close enough to be worth running tests and getting code review. The purpose of this PR is to make various bug fixes and infrastructure changes so that it is trivial to use the roslyn compiler server on a clean checkout.
Summary of the changes:
* configure.ac generates some additional variables in config.make that are used to configure the compiler server mode in make. You can then use the compiler server by passing ```ENABLE_COMPILER_SERVER=1``` to make or flipping the switch in config.make.
* config.make has two variables pointing to the compiler server version of roslyn. This lets you use a local build/checkout of roslyn but only when the compiler server is enabled. Once we update in-tree roslyn these vars can default to that. (The in-tree version of csc is not compatible with the compiler server.) The vars are named ```SERVER_CSC_LOCATION``` and ```VBCS_LOCATION```.
* config.make also has a variable that sets the name of the roslyn compiler server pipe. If you're trying to build multiple checkouts in parallel, or build in multiple user accounts, you'll need to use separate pipenames. You'll be able to set this from the command line once I tweak the config file with ```COMPILER_SERVER_PIPENAME=xxx```.
* basic_profile_check attempts to start the compiler server before any builds happen. I put it there because that was the only way I found to get it to always run before mcs builds. I spent a few hours trying to add a separate build target for this, and then gave up because makefiles. (I'd love to get suggestions on a better way to do this) Because it's nontrivial to track compiler server instances across builds, I just spawn a new one every time - this works fine because the compiler server has logic to detect an existing instance.
* I completely rewrote our implementation of Timer and its scheduler, because the existing one was burning an entire core at all times in the compiler server, mostly calling SortedList methods. The new implementation is probably not release-ready, but I focused on keeping it easy to audit and understand because attempts to preserve the existing logic kept breaking. Ideally we can just pull in corefx's timers here, but it looked non-trivial to do that.
* ReaderWriterLockSlim was checking Environment.ProcessorCount every time it was used, which in most configurations will result in a syscall to getpid() and another syscall to check our affinity. This was bottlenecking the compiler server really bad. I changed this to match most other threading code and use PlatformHelper.ProcessorCount instead.
* Our nunit.snk was corrupt (not sure how this happened) so I replaced it with the current nunit.snk from mainline nunit. Thanks to @jaredpar and other roslyn folks for troubleshooting this - it was causing problems for our msbuild infrastructure as well and I never figured that out.
Some work remains before the compiler server is good enough to use by default, which I will probably document here (or in tree? on a wiki?)
|
|
|
|
|
|
|
|
We're always using the code now and will deal with the
differences to .NET 4.x by producing reference assemblies.
|
|
|
|
|
|
It is always set in all profiles that we support so we can remove it.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This reverts commit b23609f81a95b384538dba01a1cbf49fe2a9b95a.
Confirmed by Brett Lopez as MSDN bug
|
|
Add resources for:
mscorlib
System
System.ComponentModel.DataAnnotations
System.Core
System.Core
System.Data.DataSetExtensions
System.Data.Entity.Design
System.Data.Entity
System.Data.Linq
System.Data.SqlXml
System.Data
System.Net
System.Numerics
System.Runtime.Serialization
System.ServiceModel.Web
System.ServiceModel
System.Web.Mobile
System.Web
System.Xml.Linq
System.Xml
|
|
|
|
error on older versions of mcs.
|
|
is internal on framework versions before 4.5. As corlib internals are visible from System.Core we can use Volatile.
|
|
* Builds without [MethodImpl(MethodImplOptions.AggressiveInlining)]
when target framework version is lower than 4.5.
* Use Thread.Volatile instead of Volatile.Read when target framework
version is lower than 4.5.
|
|
_ _ _____ _____ ____ _ _
| \ | | ____|_ _| | _ \ ___ ___| | _____| |
| \| | _| | | | |_) / _ \ / __| |/ / __| |
_| |\ | |___ | | | _ < (_) | (__| <\__ \_|
(_)_| \_|_____| |_| |_| \_\___/ \___|_|\_\___(_)
|