fix Issue 12859 - Read-modify-write operation for shared variable in Phobos

Mark some unittest blocks deprecated to suppress messages during Phobos build

Update stdio.d

Eliminate use of deprecated read-modify-write operation on shared variable.

Update getopt.d

Fix Ddoc: Stray '(' warning.

Update random.d

Fix Ddoc: Stray ")" warning.

Update uni.d

Fix Ddoc: Stray ')' warning.

Revert "Update stdio.d"

This reverts commit dbdcb2b9960c594f680cb965f3ce112537d98779.

Fix issue 12859 again

The direct pushing by Andrew Edwards had accidentally reverted regression fix.

inout instance field is not allowed in D

Issue 13013 - Converted real to double in std.json.JSONValue

Updated std.format documentation of width and precision specifiers

fix Issue 10916 - toHash on VariantN not being recognised

Make VariantN.toHash() const nothrow @safe. Assume that `VariantN.type` property is @safe nothrow.

Remove redundant Tuple.opEquals

Today struct type equality `a == b` is expanded to `a.tupleof == b.tupleof`, so opEquals method is unnecessary for `std.tyoecons.Tuple`.

std.algorithm.remove: Fix constraints and change popBack loop to popBackN

std.algorithm.remove: Change pop____N to pop____Exactly

Add documented unit tests for formatValue()

Add example showing how to forward format specifiers.
Add example highlighting the similarity with formattedWrite(), and
comparing their use.

Change /** */ for /// and add $(D formatValue)

Replace /** */ with /++ +/

std.json.JSONValue toString is now const

Fix issue 12455 [reg]Bad lowercase mapping for 'LATIN CAPITAL LETTER I WITH DOT ABOVE'

Also as part of a fix restores a test case in string.d
to exactly match older behaviour.

Some extended greek is not upper but title case, yet changes on toUpper.

Issue 8370 - Fix deprecated message during Linux Phobos build.

This change fixes Linux builds only. Other Posix based OS's will still use the deprecated alias from the Posix module. (This is the same behavior as the garbage collector module.)

Changed tabs to spaces

fix Issue 13056 - [2.066.0-b1] Regression: Error: template std.path.baseName cannot deduce function from argument types !()(DirEntry)

fix import declaration

Revert "Merge pull request #1827 from WalterBright/add-opCmp"

This reverts commit dab1796ad6966f28c0d220678423718d4d64f92f, reversing
changes made to 327085b8fed061853b0a9c8bdc42df9e495d0315.

[Fix] Fix property enforcement when using `BigInt`.

Mark std.file.rename as @trusted

Mark std.file.remove as @trusted

Mark std.file.writeImpl as @trusted

Supplemental fix for issue 13074 - revert opEquals and add toHash in std.typecons.Tuple

cartesianProduct: default order should be lexicographically sorted.

Update unittest and example code to reflect new ordering.

Get rid of exponential template bloat for most common use case of cartesianProduct.

getoptx

some tinkering

alot more

comments

some more

more doc

getoptX cleanup

tuple -> struct

getoptX -> getoptEx

Required

getoptEx is now inline

GetoptRslt -> GetoptResult

more info

some comment fixes

Merge enforceEx with enforce

Makes it possible to call `enforce!MyException` instead of `enforceEx!MyException`, eliminating
redundant notation. Old enforceEx is not deprecated but removed from documentation examples.

(last)indexOfNeither(index)

faster

merged indexOfAnyImpl with indexOfNeitherImpl and fixed a bug

Mark std.file.write and append as trusted

Mark std.stdio.lockingTextWriter.this as safe

Mark unittests for std.stdio.File.error, detach and flush as safe

fix Issue 13098 - std.path functions no longer works with DirEntry

Fix Issue #12835: open lower bound for integral-type uniform()

Added a cast to ensure the setting of lower bound can handle character
types and integral types smaller than int.  The additional unittests
should prevent such issues from arising again.

Fix issue 3363: std.stream.readf segfaults with immutabel format strings

Added unittest

Fix issue #13100 - std.process.setCLOEXEC() throws

There are two cases in which the fcntl() calls may fail:

  1) the file descriptor is invalid, in which case errno == EBADF,
  2) they receive invalid arguments, in which case errno == EINVAL.

We just want to ignore the error in the former case, as evidenced by
the bug report, and the latter means that we have an error in
std.process, which is best handled by an assertion. (Note that it was
never possible to catch the exception anyway, since it was thrown in
the child process.)

Start getting tests passing on Android/x86

Fix Issue 13042 - std.net.curl.SMTP doesn't send emails with libcurl-7.34.0 or newer

Fix bug 7648 comment in `std.stdio.File` and add bug section to `std.file.slurp`.

Issue URL: http://d.puremagic.com/issues/show_bug.cgi?id=7648

std.math: Check if dmd-style inline asm is available

Add method for std.net.curl.HTTP that allows user to specify Content-Type.

Expand ddoc.

Added std.algorithm.safeLess for safe signed/unsigned comparison; rewrote min/max

Add `@nogc` attributes to `std.utf`.

Also remove GC allocation from `byDchar.front` as it caused all `by*` ranges be not-`@nogc`.

Issue 10194. Variant does not call struct destructors.

Implemented elaborate copying support.

Fix Issue 12556 - Add persistent byLine

Make byLineCopy support mutable line copies

Fix caching byLineCopy.front (oops)

Clarify when to use byLineCopy vs byLine

Indent parameters

Sanitize Appender constraints a bit.

Fix range violation for cartesianProduct of empty ranges.

Completes the fix for: https://issues.dlang.org/show_bug.cgi?id=10693

.init value of cartesianProduct should be empty.

Deprecate std.c.string and move its contents to druntime

Remained fix for issue 13098 - isValidFilename and alias this

[Refactoring] reduce overloads

Fix Issue 4483 - foreach over string or wstring, where element type not specified

std.process does not support Unicode and assume it's iterating over
ASCII.

Modified Levenshtein distance()

Modified the implementation of Levenshtein distance so that it now uses O(n) memory but retains the same time complexity. However, does not work with path().

Modified Levenshtein distance()

Modified the implementation of Levenshtein distance so that it now uses O(n) memory but retains the same time complexity. However, does not work with path().

Fixed formatting

Moved all braces so that they are on their own lines and removed the trailing whitespace after function declaration;

Moved previous distance() implementation

Moved to be a private method and only expose new more memory efficient
distance(). This is done because we need the old implementation for
path(). Modified levenshteinDistanceAndPath() to use the old distance()
to reflect this.

Refactored, added unit tests and removed opIndex.

Moved checks for which Range is longer to levenshteinDistance() method.

Reverted to implementation found in original distance() with regards to
using front/popFront instead of opIndex.

Fixed formatting of return statement.

Added two unit tests for levenshteinDistance().

Credit to @Poita.

Refactored distance() and corrected path()

Refactored distacen() so that it now accepts the lengths of the ranges
because we already calculate these in levenshteinDistance().

Altered ss in distance() and tt in distanceWithPath().

Moved popFront()’s to after their final usage to handle transitive
ranges.

Corrected path() so that it calls distanceWithPath() instead of
distance().

Removed calls to matrix() in distance()

Since _matrix is now a single dimension matrix, calls to matrix() have
been removed and replaced with direct access equivalents.

Changed the implementation of distance() so that it uses the memory inefficient version to prevent breakage in the API. Efficient version has been moved to distanceLowMem() in the struct and is called internally by levenshteinDistance()

Removed the accidental semicolon

fix Issue 12853 - std.encoding EncodingSchemeUtf16Native and EncodingSchemeUtf32Native decode() and SafeDecode() wrong stripping length

fix Issue 12853 - std.encoding EncodingSchemeUtf16Native and EncodingSchemeUtf32Native decode() and SafeDecode() wrong stripping length

fix Issue 13077 - std.range.array with shared InputRangeObject

prevent ambiguity when calling take with a Take!R

If Take!R satisfied ```isInputRange!(Unqual!R) && !isInfinite!(Unqual!R) && hasSlicing!(Unqual!R)``` then you would get an ambiguity error calling take!(Take!R)

fix unittest

actually fix the unittest...

Fixed handling of a struct with no "length" field defined but with opDispatch of inappropriate type.

Document std.range.transposed (issue 4330).

Add unittested example as well.

Fix issue 8764

Transposed can only work with ranges of ranges if the subranges are
assignable. Add signature constraints.

Fix forward range bugs (should use .save instead of just copying the
range object).

Add unittests.

Move docs from struct Transposed to transpose().

some love for std.string

many functions of std.string had no attributes like pure, safe etc.
additionally, many const arguments where not marked as const.
tabs -> whitespace
removed tail whitespace
Doc Examples to unittest docs

more love for std.string

const to in

squeeze

Don't use fprintf to output D strings since they might contain embedded nulls.

Instead, use fwrite to output the string in its entirety. It's probably
more efficient this way anyway, since we bypass format string parsing in
fprintf.

Update unittest to check for correct writing of embedded nulls.

Add clamp function

Request in issue 10039

http://d.puremagic.com/issues/show_bug.cgi?id=10039

Adjust clamp signature and tests

signed is now deduced over unsigned, added small documented unittest
instead of full block

Add in contract for clamp()

lower bound should not be larger than higher one

Mention 'clamp' in the cheatsheet

Enhancement request 13022: add `std.complex.sqAbs`

Add `std.complex.abs2`, which returns the squared modulus of a
`Complex` or real number.

Rationale:
* It is common to need the squared modulus of a complex number,
and using `abs(z)*abs(z)` would be inefficient due to the
computation of the square root.
* The name `abs2` has been chosen for consistency with `abs`, and
for being mathematically more correct than `norm`, used by C++ STL
for the equivalent function.
* For genericity, the function `abs2` is also declared for real
floating point numbers, in which case it simply returns its
square.

UPDATE: use `sqAbs` instead of `abs2`.

Fix possible copy and paste mistake

fix Issue 13149 - released libphobos2.a is build with PIC code

- Happens because the libphobos2.so was build with a recursive
  target and PIC=1. This PIC=1 enabled -fPIC for the recursive
  libdruntime.a build.

- fixed by building $(LIBSO) non-recursively

Convert std.math.isFinite into a template

Convert std.math.isSubnormal into a template

Add floatTraits.SIGNPOS_BYTE for float

Convert std.math.signbit into a template

Convert std.math.copysign into a template

Fixup use of whitespace in places

Use unsigned-safe comparing in clamp contract

assumeUTF from idea of issue10162

format whitespace

doc unittest

assumeUTF with const immu

validate in debug mode

whitespace

wrong attributes

Ddoc supported 'real' formats in std.math

Make emplaceRef parameter optional

emplaceRef unittest

Enable Unique!struct unittest

Prevent double delete of Foo by calling release in f().
Cleanup unittests a little.

Enable Unique!class unittest

Call release as a workaround to prevent Bar deletion in g(), leading to
access violation.

Fix Issue 13068 - std.typecons.Unique should disable postblit

Don't delete null reference/pointer

Update Unique docs

Pre-allocate result array in getAddress and use Appender in getAddressInfoImpl

Fixes issue #13159

Make ModifyTypePreservingSTC package instead of private

Change assumeUTF to use ModifyTypePreservingSTC and thus support shared

Change representation to use ModifyTypePreserveSTC

Fix documentation of when dirName() allocates

Whether the `path` argument is mutable or not has no bearing on if dirName() allocates.

issue 13018: translate does not except immutable or const AAs

removed the comment

some fixes

less code

change install target to match current release structure

Add enum RealFormat for floatTraits

Replace mant_dig CTFE tests with realFormat

Add integral overload for isNaN for use in generic code

fix Issue 13171 - std.algorithm.until(range, sentinel, OpenRight.no) doesn't propagate popping of sentinel to range

change `|=` to `||`

Fix install directory on Mac OS X

Revert "Add integral overload for isNaN for use in generic code"

Fix posix.mak

Update std.uni tables generator to use @nogc

Enables @nogc isWhite and related functions.
A supplement to pull #2323

Fix Issue 8866 - Splitter(R1, R2) CANNOT be bidirectional.

Fix issue 12923

UTF exception in stride even though passes validate.
The root cause is that decode has very lax checking of the first
code unit.

Mark std.file.read as @trusted

Change ReadFile(...) == 1 to ReadFile(...) != 0

Using nested trusted functions

Fix trustedRef

Re-implement reduce.

Consolidates the implementation, prepares for "fold", and also fixes a couple of issues:
http://forum.dlang.org/thread/oghtttkopzjshsuflelk@forum.dlang.org
https://issues.dlang.org/show_bug.cgi?id=10709
https://issues.dlang.org/show_bug.cgi?id=12569

Reduce unittest for 10709, 12569, and...

...an unfiled issue from the forums

Use `assertThrown` in reduce unittest

Make std.stdio.File.LockingTextWriter.put safe

Make public fps, handle, and orientation deprecated

Fix deprecation for fps, handle and orientation

Mark a unittest for std.file.read as safe

Fix a minor typo.

I noticed a small typo while I was looking at random documentation pages.

Fix Issue 12668 -  std.traits.functionAttributes should use the new
getFunctionAttributes trait.

[reg] Fix 13210 : libphobos2.so not being built

Mark std.file.getFileAttributesWin as trusted and makeUlong as safe pure
nothrow nogc

Mark std.file.readText as trusted

Made File.writeln infer @safe/@trusted/etc. Also wrapped stdout in @trusted private function so writeln (and family) free functions don't always infer @system.

fix issue 13163 - std.conv.parse misses overflow when it doesn't result in a smaller value

don't bother with signed types

Everything is >= 0 all the time anyway.

fix whitespace

Mark unittests for std.file.readText, rename and exists as safe

fixup #2377 - add back missing $(SONAME) symlink

Add missing imports

Issue 13232 - avoid expensive template instantiations on module import

- hide std.uni.TrieBuilder instantiations behind functions

Define isNaN deprecation for integers

Also cleans isNaN unit tests

Add more integer isXXX deprecations

Also implementation is changed to forward to floating point signature
instead of a stub to exactly match old behaviour.

localize some imports

Remove workaround for issue 12164.

fix property enforcement

std.bitmanip BitArray refactor and various fixes

Recommend using portable std.ascii.newline for line terminator

Also document 'lines' constructor.

Note that readln() cannot support string terminators

Don't use std.ascii.newline with text mode

std.getopt: Remove opinionated comment regarding option bundling

The behavior is standard in UNIX programs. Although it wouldn't make sense
to change the default at this point, D documentation is not a good place
for criticizing established standards.

Replace use of T.min to determine signedness with std.traits.isUnsigned.

Make all tests that create a temporary file in the local directory get the path from one central function, so they can be made to use an absolute path

Tweaks to get the tests running inside an Android apk

fix Issue 13258 - std.process file closing logic is incorrect

std.bitmanip BitArray: add function attributes

Remove unused private writefx() function.

This eliminates the 3rd last usage of doFormat in Phobos, thus inching
us closer to fully fixing bug #4532.

Deprecated most of the old std.process functions

I have purposefully omitted doing anything about the exec* function
family here, as their fate is still under discussion.

Fix missing $(RPAREN) in ddoc for std.random.uniform01.

Fix screwed up list nesting in getopt's ddoc comment.

Fix std.string ddoc problems.

Fix missing parameters in ddocs for indexOfAny, indexOfNeither, etc..
Fix missing closing ')' which causes ddoc nesting error.

This should get rid of the warnings spewed by the compiler when building
the docs for `std.string`.

Mark std.file.getSize as trusted

Use nested trusted function

fix issue 9942 - Add a functional switch function

std.algorithm.predSwitch is the functional version of the `switch`
statement(without a lookup table).

Add missing imports

Remove unused test in std.process

This seems like a remnant from when the first version of std.process was
being developed.  It does not appear to be in use today, so there is no
reason to keep it around.

Ddoc for map() should be associated with the function itself.

Do the same for amap and reduce, for consistency's sake.

[Refactoring] Make unittest exhaustive

fix Issue 13284 - Cannot match shared classes at receive

Fixed std.process.system() deprecation message

wait(spawnProcess(command)) is a closer match to system(command).

attributes and two small bug fixes for csv

some more

some reverts

nitpick

csv love update

forgot some

added one nogc

some more

fix Issue 13263

- replace phony druntime_libs target with $(DRUNTIME)

- add fake FORCE dependency to always invoke druntime's makefile

unittest objects also depend on druntime

- for the druntime imports

fix Issue 12297 - std.typecons.Proxy does not properly forward IFTI calls

findRoot fix

Update numeric.d

Update numeric.d

clear comment

rebase

Replace use of FracSec in SysTime's API with Duration.

FracSec is overly verbose and based on the recent discussions with
regards to Duration.get and Duration.split, it should be given the boot.
The only non-deprecated place which uses it in Phobos is SysTime, so
this deprecates the functions that use it, and replaces it with ones
that expect a Duration of less than one second.

This means replacing a SysTime constructor and SysTime's fracSec
property. fracSecs is introduced to replace fracSec. It uses a Duration
or takes a template argument for the units and then uses an int
(essentially then creating an overload which is a shortcut for calling
Duration.total or creating a Duration, depending on whether its the
getter or the setter).

Replace fracSecToISOString and fracSecFromISOString.

Replace uses of FracSec.from!"msecs" with core.time.msecs.

Replace uses of FracSec.from!"msecs" with core.time.msecs.

Replace uses of FracSec.from!"usecs" with core.time.usecs.

Replace uses of FracSec.from!"hnsecs" with core.time.hnsecs.

Replace uses of FracSec.from!"hnsecs" with core.time.hnsecs.

Replace uses of FracSec.from!"hnsecs" with core.time.hnsecs.

Remove last undeprecated uses of SysTime.fracSec.

Clean up uses of zero-length Durations.

Cleanup of a version-else block in std.datetime so that it has an else.

Added toString to Appender class

Improve implementation.

Add unittest.

Appender.toString shouldn't pretend it's an array.

So it should still print "Appender!(...)(...)" except that it will now
print the array contents instead of a random memory address.

More concise way to achieve the same thing.

Deprecate execv function family on Windows

For the discussions that led to the decision of deprecating these
functions on Windows, but not POSIX, see:

http://forum.dlang.org/thread/l4nav4$q9r$1@digitalmars.com
http://lists.puremagic.com/pipermail/phobos/2014-August/008827.html

Added deprecation message details to execv*()

Add `pure`/`nothrow`/`@nogc` attributes to `std.socket`.

Also add `in` parameter storage class to `validHostent` function.
Also add attributes to `std.c.windows.winsock`.

Make `getnameinfo`, `getaddrinfo`, and `freeaddrinfo` pointers `immutable`.

Add `@safe`/`@trusted`/`@system` attributes to `std.socket`.

[Fix][DDoc] Add missing third `/` to DDoc comment.

[Fix] Fix `SocketSet.count` return type.

Fix property enforcement in `std.traits.functionAttributes`

Fix ddoc params abuse in std.net.curl.HTTP.onProgress.

Fix ddoc params abuse for std.net.curl.FTP.onProgress.

Refactor callback params as macro to minimize copy-n-paste.

Fix ddoc params abuse in std.net.curl.SMTP.onProgress.

Fix mismatching param name.

Reenable ancient failing unittest.

Fix unittest to not require unreasonable amounts of stack space.

Fix issue 12890 - index based replace

fix Issue 13315 - std.getopt: implicit help option doesn't work without config.passThrough

fix Issue 13316 - std.getopt: implicit help option breaks the next argument

fix Issue 13317 - std.getopt: endOfOptions broken when it doesn't look like an option

whoops, forgot one ++i

Workaround deprecation of splitter.{back,popBack} in std.algorithm.map.

Simplify partialShuffle

Issue# 13319. Make tzDatabaseNameToWindowsTZName return null on failure.

Update the Windows TZ name conversions.

I also added a script at the bottom of std.datetime which can be used to
regenerate the conversions from the latest conversion file at
unicode.org so that it will be much easier to make such updates in the
future.

Fix issue# 13313: Line Islands Standard Time was missing.

It's included in this update http://support.microsoft.com/kb/2981580 but
has yet to make it into
http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/zone_tzid.html

Fix compilation errors on Windows.

hasElaborateAssign -> hasElaborateCopyConstructor.

Corrected check for elaborate copying.

fix Issue 13241 - [REG2.067a] writeln no longer flushes stdout

fix up issue 13313 - Support database name to Windows timezone name conversion

Change SysTime.fracSec to "scheduled for deprecation" from deprecated.

Vladamir has a use case where the deprecation gives him a wall of
deprecation messages, and because he needs to use both 2.066 and master,
he can't move his code over to fracSecs yet. So, I'm changing the
deprecation to "scheduled for deprecation" for one release. And because
of this case, I think that I'm going to change the general policy to
"scheduling for deprecation" for one release before actually deprecating
a symbol. The fact that deprecated just generates a message mostly
obviates the need for "scheduling for deprecation" like we used to do,
but with this change, it will give folks one release to avoid the wall
of deprecation messages if they happen to use the deprecated symbol a
lot (or just once in a frequently instantiated template as in Vladamir's
case). It probably won't do anything for anyone who doesn't read the
changelog, but it will help out the folks who do.

Fix variant.d typo

Mark std.file.getTimesWin as safe

Mark a unittest for std.file.getSize as safe

Enable safe ctor, add example

Document isEmpty and make property

Support transfer to unique base class

Note: Implicit return of a Derived lvalue -> Base is not supported.
Note: We don't need to disable the ref overload because postblit is
disabled now.

Add factory unique() for safe construction with 0 arguments

Clarify release docs

Support assignment from compatible Unique type

Add example test for borrowing Unique by ref

Replace unique() with Unique.create() for clarity

The former does not imply a heap allocation.

Document RefT

Version out Unique.create

Leave this for now in case we get language support for checking
uniqueness.

Merge pull request #2303 from 9rnsr/fix_hash

Tweak Tuple and Variant for correct hashing

Merge pull request #2314 from 9rnsr/fix13074

Supplemental fix for issue 13074 - revert opEquals and add toHash in std.typecons.Tuple

Merge pull request #2377 from Dicebot/fix-13210-makefile-dll

[reg] Fix 13210 : libphobos2.so not being built

Merge pull request #2387 from MartinNowak/fixup2377

fixup #2377 - add back missing $(SONAME) symlink