/corefx

This repo contains the .NET Core foundational libraries, called CoreFX. It includes classes for collections, file systems, console, XML, async and many others.

Primary LanguageC#MIT LicenseMIT

.NET Core Libraries (CoreFX)

Linux Windows OS X
Debug Native status
Managed status
Test status
Build status
Outerloop status
Code coverage
Native status
Managed status
Test status
Release Native status
Managed status
Build status
Outerloop status
Native status
Managed status

The corefx repo contains the library implementation (called "CoreFX") for .NET Core. It includes System.Collections, System.IO, System.Xml and many other components. You can see more information in Documentation.

.NET Core is a modular implementation of .NET that can be used as the base stack for a wide variety of scenarios, today scaling from console utilities to web apps in the cloud. You can learn more about .NET Core and how and where you can use it in the .NET Core is open source and Introducing .NET Core blog posts. The .NET Core Roadmap describes where the team is headed.

The .NET Core Runtime repo contains the runtime implementation (called "CoreCLR") for .NET Core. It includes RyuJIT, the .NET GC, native interop and many other components.

Runtime-specific library code - namely mscorlib - lives in the CoreCLR repo. It needs to be built and versioned in tandem with the runtime. The rest of CoreFX is agnostic of runtime-implementation and can be run on any compatible .NET runtime. These characteristics were the primary motivation for the 2-repo structure.

How to Engage, Contribute and Provide Feedback

Some of the best ways to contribute are to try things out, file bugs, and join in design conversations.

Want to get more familiar with what's going on in the code?

Looking for something to work on? The list of up-for-grabs issues is a great place to start or for larger items see the list of feature approved. See some of our guides for more details:

You are also encouraged to start a discussion by filing an issue or creating a gist.

You can discuss .NET OSS more generally in the .NET Foundation forums.

Want to chat with other members of the CoreFX community?

Join the chat at https://gitter.im/dotnet/corefx

.NET Core Library Components

The repo currently contains the source for the following components. More libraries are coming soon (the overall list of items we currently plan to move onto GitHub is here). 'Watch' the repo to be notified.

Component Description
System.Collections
MyGet Package
Provides classes that define generic collections, which allow developers to create strongly-typed collections.
System.Collections.Concurrent
MyGet Package
Provides a set of thread-safe collection types, instances of which may be used concurrently from multiple threads.
System.Collections.Immutable
MyGet Package
Provides a set of immutable collection types that are safe to use concurrently.
System.Collections.NonGeneric
MyGet Package
Provides classes that define various collections of objects, such as ArrayList and Hashtable. These collections exist in .NET Core primarily for backwards compatibility and generally should be avoided when writing new code.
System.Collections.Specialized
MyGet Package
Provides classes that define specialized collections of objects, for example, a linked list dictionary and collections that contain only strings. These collections exist in .NET Core primarily for backwards compatibility and generally should be avoided when writing new code.
System.ComponentModel
MyGet Package
Provides interfaces for the editing and change tracking of objects used as data sources.
System.ComponentModel.Annotations
MyGet Package
Provides attributes that are used to define metadata for objects used as data sources.
System.ComponentModel.EventBasedAsync
MyGet Package
Provides support classes and delegates for the event-based asynchronous pattern. This pattern and these supporting types exist in .NET Core primarily for backwards compatibility and generally should be avoided when writing new code.
System.ComponentModel.Primitives
MyGet Package
Provides interfaces that are used to implement the run-time and design-time behavior of components.
System.ComponentModel.TypeConverter
MyGet Package
Provides the System.ComponentModel.TypeConverter class, which represents a unified way of converting types of values to other types.
System.Console
MyGet Package
Provides the Console class, which enables access to the standard input, output, and error streams for console-based applications.
System.Data.Common
MyGet Package
Provides the base abstract classes, including System.Data.DbConnection and System.Data.DbCommand, for data providers.
System.Diagnostics.Contracts
MyGet Package
Provides types and methods for representing program contracts such as preconditions, postconditions, and invariants.
System.Diagnostics.Debug
MyGet Package
Provides a class to interact with the debugger as well as methods for performing runtime assertions.
System.Diagnostics.FileVersionInfo
MyGet Package
Provides useful functionality for querying and examining the version information of physical files on disk.
System.Diagnostics.Process
MyGet Package
Provides access to local and remote processes, and enables the starting and stopping of local system processes.
System.Diagnostics.TextWriterTraceListener
MyGet Package
Provides trace listeners for directing tracing output to a text writer, such as System.IO.StreamWriter.
System.Diagnostics.Tools
MyGet Package
Provides attributes, such as GeneratedCodeAttribute, that are emitted or consumed by analysis tools.
System.Diagnostics.TraceSource
MyGet Package
Provides classes that help you trace the execution of your code.
System.Dynamic.Runtime
MyGet Package
Provides classes and interfaces that support the Dynamic Language Runtime (DLR).
System.Globalization
MyGet Package
Provides types that define culture-related information, including language, country/region, calendars, format patterns, and sort orders.
System.Globalization.Calendars
MyGet Package
Provides classes for performing date calculations using specific calendars, including the Gregorian, Julian, Hijri and Korean calendars.
System.Globalization.Extensions
MyGet Package
Provides classes for performing unicode string normalization, culture-specific string comparisons and support the use of non-ASCII characters for Internet domain names.
System.IO
MyGet Package
Provides base input and output (I/O) types that enable reading and writing data streams.
System.IO.Compression
MyGet Package
Provides classes that support the compression and decompression of streams.
System.IO.Compression.ZipFile
MyGet Package
Provides static methods for creating and using Zip files.
System.IO.FileSystem
MyGet Package
Provides access to the file system, including support for enumerating and manipulating file system objects and for reading and writing files via streams.
System.IO.FileSystem.DriveInfo
MyGet Package
Provides the System.IO.DriveInfo class, which enables developers to query local drive information.
System.IO.FileSystem.Primitives
MyGet Package
Provides common enumerations and exceptions for path-based I/O libraries.
System.IO.FileSystem.Watcher
MyGet Package
Provides the System.IO.Watcher class, which listens to the system directory change notifications and raises events when a directory or file within a directory changes.
System.IO.MemoryMappedFiles
MyGet Package
Provides access to memory-mapped files, enabling code to read and write files by reading and writing memory.
System.IO.Packaging
MyGet Package
Provides classes that support storage of multiple data objects in a single container.
System.IO.Pipes
MyGet Package
Provides types that enable a means for interprocess communication through anonymous and/or named pipes.
System.IO.UnmanagedMemoryStream
MyGet Package
Provides a stream for accessing unmanaged memory as represented by a pointer, as well as an accessor for reading and writing primitive types from unmanaged memory.
System.Linq
MyGet Package
Provides the foundation of Language-Integrated Query (LINQ), including LINQ standard query operators that operate on objects that implement IEnumerable<T>.
System.Linq.Expressions
MyGet Package
Provides classes, interfaces, and enumerations that enable language-level code expressions to be represented as objects in the form of expression trees.
System.Linq.Parallel
MyGet Package
Provides a parallelized implementation of LINQ to Objects. "Parallel LINQ" (PLINQ) implements the full set of LINQ standard query operators as well as additional operators specific to parallel operations.
System.Linq.Queryable
MyGet Package
Provides LINQ standard query operators that operate on objects that implement IQueryable<T>.
System.Net.Http
MyGet Package
Provides a programming interface for modern HTTP applications, including HTTP client components that allow applications to consume web services over HTTP and HTTP components that can be used by both clients and servers for parsing HTTP headers.
System.Net.Http.WinHttpHandler
MyGet Package
Provides a message handler for HttpClient based on the WinHTTP interface of Windows. While similar to HttpClientHandler, it provides developers more granular control over the application's HTTP communication than the HttpClientHandler.
System.Net.NameResolution
MyGet Package
Provides the System.Net.Dns class, which enables developers to perform simple domain name resolution.
System.Net.NetworkInformation
MyGet Package
Provides access to network traffic data, network address information, and notification of address changes for the local computer.
System.Net.Primitives
MyGet Package
Provides common types for network-based libraries, including System.Net.IPAddress, System.Net.IPEndPoint, and System.Net.CookieContainer.
System.Net.Requests
MyGet Package
Provides older classes (such as HttpWebRequest and HttpWebResponse) for sending HTTP requests and receiving HTTP responses from a resource identified by a URI. This library is available primarily for compatibility; developers should prefer the classes in the System.Net.Http package.
System.Net.Security
MyGet Package
Provides types, such as System.Net.Security.SslStream, that uses SSL/TLS protocols to provide secure network communication between client and server endpoints.
System.Net.Sockets
MyGet Package
Provides classes such as Socket, TcpClient and UdpClient, which enable developers to send and receive data over the network.
System.Net.WebHeaderCollection
MyGet Package
Contains types that represent HTTP request and response headers. This library is used with classes such as System.Net.HttpWebRequest and System.Net.HttpWebResponse and allows developers to query/edit header names/values.
System.Net.WebSockets
MyGet Package
Provides the System.Net.WebSockets.WebSocket abstract class and related types to allow developers to implement the WebSocket protocol (RFC 6455). WebSockets provide full-duplex communication over a single TCP connection.
System.Net.WebSockets.Client
MyGet Package
Provides the System.Net.WebSockets.ClientWebSocket class, which implements the client role of the WebSockets protocol (RFC 6455).
System.Numerics.Vectors
MyGet Package
Provides a set of basic vector types that leverage single instruction, multiple data (SIMD) CPU instructions.
System.Numerics.Vectors.WindowsRuntime
MyGet Package
Provides extension methods for converting between types in System.Numerics.Vectors and types in the Windows Runtime (WinRT).
System.ObjectModel
MyGet Package
Provides types and interfaces that enable the creation of observable types that provide notifications to clients when changes are made.
System.Reflection
MyGet Package
Provides types that retrieve information about assemblies, modules, members, parameters, and other entities in managed code by examining their metadata.
System.Reflection.DispatchProxy
MyGet Package
Provides a mechanism for dynamically creating proxy types that implement a specified interface and derive from a specified DispatchProxy type.
System.Reflection.Emit
MyGet Package
Provides types that allow a compiler or other tool to emit metadata and generate PE files on disk.
System.Reflection.Emit.ILGeneration
MyGet Package
Provides types that allow a compiler or other tool to emit Microsoft intermediate language (MSIL).
System.Reflection.Emit.Lightweight
MyGet Package
Provides the System.Reflection.Emit.DynamicMethod class, which represents a dynamic method that can be compiled, executed, and discarded.
System.Reflection.Extensions
MyGet Package
Provides custom attribute extension methods for System.Reflection types.
System.Reflection.Metadata
MyGet Package
Provides a highly-tuned, low-level ECMA-335 metadata reader. This is the same reader used by "Roslyn" C# and Visual Basic compilers to parse assemblies.
System.Reflection.TypeExtensions
MyGet Package
Provides extension methods for types in the System.Reflection namespace. These extensions are designed to be source-compatible with older reflection-based APIs.
System.Resources.ReaderWriter
MyGet Package
Provides classes for reading and writing resources in the system-default format.
System.Runtime
MyGet Package
Provides the fundamental primitives, classes, and base classes that define commonly-used value and reference data types, events and event handlers, interfaces, attributes, and exceptions.
System.Runtime.Extensions
MyGet Package
Provides commonly-used classes for performing mathematical functions, conversions, string comparisons, and querying environment information.
System.Runtime.Handles
MyGet Package
Provides base classes, including CriticalHandle and SafeHandle, for types that represent operating system handles.
System.Runtime.InteropServices
MyGet Package
Provides types that support platform invoke (P/Invoke) and COM interop.
System.Runtime.InteropServices.RuntimeInformation
MyGet Package
Provides types that expose information about the runtime and operating system environment in which code is executing.
System.Runtime.Numerics
MyGet Package
Provides two useful numeric structures, BigInteger and Complex.
System.Runtime.Serialization.Json
MyGet Package
Provides classes for serializing objects to the JavaScript Object Notation (JSON) and for deserializing JSON data to objects.
System.Runtime.Serialization.Primitives
MyGet Package
Provides common types, including System.Runtime.Serialization.DataContractAttribute, for libraries that support data contract serialization.
System.Runtime.Serialization.Xml
MyGet Package
Provides classes for serializing objects to the Extensible Markup Language (XML) and deserializing XML data to objects.
System.Security.Cryptography.DeriveBytes
MyGet Package
Provides the System.Security.Cryptography.Rfc2898DeriveBytes class, which implements password-based key derivation functionality per RFC 2898.
System.Security.Cryptography.Encoding
MyGet Package
Provides types for representing Abstract Syntax Notation One (ASN.1)-encoded data.
System.Security.Cryptography.Encryption
MyGet Package
Provides base types for symmetric and asymmetric cryptographic algorithms.
System.Security.Cryptography.Encryption.Aes
MyGet Package
Provides types which perform symmetric encryption and decryption using the Advanced Encryption Standard (AES) algorithm.
System.Security.Cryptography.Hashing
MyGet Package
Provides base types for cryptographic hashing and hash-based message authentication code (HMAC).
System.Security.Cryptography.Hashing.Algorithms
MyGet Package
Provides concrete implementations of cryptographic hashing and hash-based message authentication code (HMAC), including MD5, SHA-1, and SHA-2.
System.Security.Cryptography.RandomNumberGenerator
MyGet Package
Provides the System.Security.Cryptography.RandomNumberGenerator class, which generates cryptographically secure random numbers.
System.Security.Cryptography.RSA
MyGet Package
Provides types which perform asymmetric encryption and decryption using the RSA algorithm.
System.Security.Cryptography.X509Certificates
MyGet Package
Provides types for reading, exporting and verifying Authenticode X.509 v3 certificates.
System.Security.Principal
MyGet Package
Provides the base interfaces for principal and identity objects that represent the security context under which code is running.
System.Security.Principal.Windows
MyGet Package
Provides classes for retrieving the current Windows user and for interacting with Windows users and groups.
System.ServiceProcess.ServiceController
MyGet Package
Provides the ServiceController class that represents a Windows service and allows you to connect to a running or stopped service, manipulate it, or get information about it.
System.Text.Encoding
MyGet Package
Provides base abstract encoding classes for converting blocks of characters to and from blocks of bytes.
System.Text.Encoding.CodePages
MyGet Package
Provides the ability to access existing encoding types for string manipulation across common cultural standards, as well as support to create custom Encoding Providers.
System.Text.Encoding.Extensions
MyGet Package
Provides support for specific encodings, including ASCII, UTF-7, UTF-8, UTF-16, and UTF-32.
System.Text.Encodings.Web
MyGet Package
Provides support for encodings related to HTML, JavaScript, and URLs.
System.Text.RegularExpressions
MyGet Package
Provides a regular expression engine. The types in this library provide useful functionality for running common operations using regular expressions.
System.Threading
MyGet Package
Provides synchronization primitives used when writing multi-threaded and asynchronous code.
System.Threading.Overlapped
MyGet Package
Provides common types for interacting with asynchronous (or overlapped) input and output (I/O) on Windows.
System.Threading.Tasks
MyGet Package
Provides types that simplify the work of writing concurrent and asynchronous code.
System.Threading.Tasks.Dataflow
MyGet Package
Provides a set of types that support actor/agent-oriented designs through primitives for in-process message passing, dataflow, and pipelining.
System.Threading.Tasks.Parallel
MyGet Package
Provides library-based data parallel replacements for common operations such as for loops, for each loops, and execution of a set of statements.
System.Xml.ReaderWriter
MyGet Package
Provides types for reading and writing streams of XML.
System.Xml.XDocument
MyGet Package
Provides XML-related types for querying XML documents using LINQ.
System.Xml.XmlDocument
MyGet Package
Provides types for manipulating an XML Document Object Model (DOM).
System.Xml.XmlSerializer
MyGet Package
Provides classes for serializing objects to XML and for deserializing XML data to objects.
System.Xml.XPath
MyGet Package
Provides classes that define a cursor model for navigating and editing XML information items as instances of the XQuery 1.0 and XPath 2.0 Data Model.
System.Xml.XPath.XDocument
MyGet Package
Provides extension methods that add System.Xml.XPath support to the System.Xml.XDocument package.
System.Xml.XPath.XmlDocument
MyGet Package
Provides extension methods that add System.Xml.XPath support to the System.Xml.XmlDocument package.
Microsoft.CSharp
MyGet Package
Provides support for compilation and code generation, including dynamic, using the C# language.
Microsoft.VisualBasic
MyGet Package
Provides types that support the Visual Basic runtime.
Microsoft.Win32.Primitives
MyGet Package
Provides common types supporting the implementation of Win32-based libraries.
Microsoft.Win32.Registry
MyGet Package
Provides support for accessing and modifying the Windows Registry.

License

.NET Core (including the corefx repo) is licensed under the MIT license.

.NET Foundation

.NET Core is a .NET Foundation project.

Related Projects

There are many .NET related projects on GitHub.