New Library Classes in "Orcas"

.NET Framework 3.5 is scheduled to be shipped with “Orcas” later 2007 or early 2008. “Orcas” is the codename of Microsoft’s next generation of the heavy and effective IDE Visual Studio 2007.

According to Microsoft site, the new .NET Framework has been divided into two parts: red bits and green bits. The red bits is backward-compatible 3.0 netFX libraries, while the green bits is totally new assemblies with some extra new features including:

  • A new add-in hosting model, which was discussed in the last two editions of CLR Inside Out
  • Support for the Suite B set of cryptographic algorithms, as specified by the National Security Agency (NSA)
  • Support for big integers
  • A high-performance set collection
  • Support for anonymous and named pipes
  • Improved time zone support
  • Lightweight reader/writer lock classes
  • Better integration with Event Tracing for Windows® (ETW), including ETW provider and ETW trace listener APIs

Suite B Implementations

Suite B standard is from NSA, including these implementations:

  • The Advanced Encryption Standard (AES) with key sizes of 128 and 256 bits for encryption
  • The Secure Hash Algorithm (SHA-256 and SHA-384) for hashing
  • The Elliptic Curve Digital Signature Algorithm (ECDSA) using curves of 256-bit and 384-bit prime moduli for signing
  • Elliptic Curve Diffie-Hellman (ECDH) using curves of 256 and 384-bit prime moduli for key exchange/secret agreement

The new .NET Framework provides these implementations, and also a new class named CngKey:

To support our new CNG-based managed cryptography classes, we’ve added a CngKey class to abstract the storage and usage of CNG keys. CNG keys work similarly to key containers in today’s Crypto API (CAPI)—they allow you to store a key pair or a public key securely and refer to it using a simple string name. You can use CngKey objects when working with the ECDsaCng and ECDiffieHellmanCng classes.
>
> You can also use the CngKey class directly to perform many operations, including opening, creating, deleting, and exporting keys. If we don’t have a managed API for the operation you want, you can get to the underlying key handle to use when calling Win32® APIs directly.
>
>

Better Integer Support: BigInteger

Now you can have the BigInteger class with these operation supports:

  • Abs (returns the absolute value for a given BigInteger)
  • Compare (compares two BigIntegers)
  • Divide (returns the quotient of two BigIntegers)
  • DivRem (returns both the quotient and the remainder of two BigIntegers)
  • Equals (returns true if two BigIntegers have the same value)
  • GreatestCommonDivisor (returns the maximum number that is a divisor of both BigIntegers)
  • ModPow (returns one BigInteger raised to the power of another BigInteger modulo a third; the exponent cannot be negative)
  • Pow (returns one BigInteger raised to the power of another; the exponent cannot be negative)
  • Remainder (returns the remainder of dividing one BigInteger by another)

A New High-Performance Collection Class: HashSet

The new class HashSet was added to System.Collection.Generic namespace as a unordered generic high-performance collections that contains unique elements. It implements all the standard collection methods (such as Add, Remove, and Contains) and provides several set operations (including union, intersection, and symmetric difference). It’s easy to use and with high-performance.

Pipes: System.IO.Pipes

Both anonymous and named pipes are supported. Now nearly all the pipe functionality provided by Windows are exposed. Now it’s easy to achieve IPC from managed code. If you have experience with Windows native pipes, you will get no trouble to start with the new managed class.

Conclusion

We can expect more complete .NET Framework covering your industry, commercial, personal development requirements. As Microsoft has been described, .NET Framework will as last cover what Win32 SDK covers. It’s not rumor or business advertisement, I believe managed code will be natively supported by OS one day, neither .NET nor Java, or some other languages.