This repo is for experimentation and exploring new ideas that may or may not make it into the main corefx repo.
Curently, this repo contains the following experimental components:
-
System.Text.Formatting. System.Text.Formatting APIs are similar to the existing StringBuilder and TextWriter APIs. They are designed to format values into text streams and to build complex strings. But these APIs are optimized for creating text for the Web. They do formatting with minimum GC heap allocations (1/6 of allocations in some scenarios) and can format directly to UTF8 streams. This can result in significant performance wins for software that does a lot of text formatting for the Web, e.g. generating HTML, JSON, XML. See more information on this component and code samples at the [Wiki]: https://github.com/dotnet/corefxlab/wiki
-
System.IO.FileSystem.Watcher.Polling. .NET's FileSystemWatcher has low overhead, but it can miss some changes. This is acceptable in many scenarios, but in some, it might be not. This component, PollingWatcher, allows to monitory directory changes by polling, and so will never miss a change. It is optimized to minimize allocations, when no changes are detected. In fact, it does not allocate anything on the GC heap when there are no changes detected.
-
System.Threading.Tasks.Channels. The System.Threading.Tasks.Channels library provides a set of synchronization data structures for passing data between producers and consumers. Whereas the existing System.Threading.Tasks.Dataflow library is focused on pipelining and connecting together dataflow "blocks" which encapsulate both storage and processing, System.Threading.Tasks.Channels is focused purely on the storage aspect, with data structures used to provide the hand-offs between participants explicitly coded to use the storage. The library is designed to be used with async/await in C#. See the README.md for more information.
-
System.Time. This project augments the date and time APIs in .NET. It adds two new core types:
Date
andTimeOfDay
. It also provides extension methods to enhance the functionality of the existingDateTime
,DateTimeOffset
andTimeZoneInfo
types. -
System.Collections.Generic.MultiValueDictionary. The MultiValueDictionary is a generic collection that functions similarly to a Dictionary<TKey, ICollection> with some added validation and ease of use functions. It can also be compared to a Lookup with the exception that the MultiValueDictionary is mutable. It allows custom setting of the internal collections so that uniqueness of values can be chosen by specifying either a HashSet or List. Some of the design decisions as well as introductions to usage can be found in the old blog posts introducing it here and here.
More libraries are coming soon. Stay tuned!
For an overview of all the .NET related projects, have a look at the .NET home repository.
You can get the .NET Core Lab packages from netcore-package-prototyping MyGet feed:
https://www.myget.org/F/netcore-package-prototyping/api/v2
You can add this feed among your NuGet sources and install the packages (keep in mind that packages are pre-release packages).
This project is licensed under the MIT license.
This project is a part of the .NET Foundation.
To find out how you can build and test .NET Core, see the Developer Guide.