Download Reference Manual
The Developer's Library for D
About Wiki Forums Source Search Contact

Breaking Changes for 0.99.8


  • 'shared' became a keyword in D2, so we had to replace the use of it with the name 'instance' instead.

  • In order to streamline, the modules FileConduit, Conduit, and DeviceConduit have been moved to instead, and renamed. They will be joined by SerialPort, ThreadPipe and others. The biggest impact here is likely to be FileConduit, which has also been renamed to just File instead. Old modules remain in place, with a pragma(msg) to indicate required changes.
  • The use of FilePath in TempFile is deprecated in favour of char[] paths. This was missed in the related sweep of the prior release. TempFile has migrated to
  • Modules within have been renamed, though the old modules remain in place for this release (and cause pragma messages to be emitted).
  • The module has been merged into as a set of three static functions.
  • has finally run out of steam, having played three roles. In its place are a pair of input and output buffers, within A memory-based conduit,, has been added to take on that explicit role along with the role of GrowBuffer.
  • Endian settings within DataStream & DataFileStream has changed from a ctor parameter to a dedicated method. Default behaviour is unchanged.


  • In order to avoid some confusion, document.root has been renamed document.tree instead. A document.elements method has been added to expose the element root.


  • TimeSpan.seconds(ulong), etc. is now replaced by TimeSpan.fromSeconds(ulong), etc. The original form causes problems when people write code like:
    auto ts = TimeSpan.seconds(60);
    ts.seconds = 30; // you would think this would assign 30 seconds to ts, but what it does is create a 
                     // temporary and throw it away.


  • iterator.freach has been replaced by a simpler and much more efficient approach: to remedy, remove references to each .freach tail
  • CircularList.iterator.reverse has a different return value


  • Layout.convertOne() has been removed since it did not fully support array conversions. Layout.vprint() should be used instead.


  • Process has a new feature to copy the environment. Prior to this change, the environment was copied on Windows systems when no environment was passed in. After this change however, the default is to not copy the environment. So code that is expecting the environment to be copied should be updated to use the new copyEnv field. Posix systems default was to create a blank environment, so this is not a breaking change for those platforms.
  • Process no longer uses multiple execute functions. This is to cut down on the number of possible combinations. A new chaining property set model has been created, so you can set multiple properties on one line and then call execute.
  • Process will now by default create a console window on Windows. In order to prevent this, set the gui property of Process to true. Previously, this flag was always set, but it caused some problems with the new fine-grained standard handle redirection functionality.

The FTP functionality has gotten a long overdue Tango-fication. This has resulted in some breaking changes:

  • Telnet: findAvailableServer now returns SocketConduit instead of Socket.