Jump to page: 1 2 3
Thread overview
Beta 2.095.0
Dec 20, 2020
Martin Nowak
Dec 21, 2020
M.M.
Dec 22, 2020
starcanopy
Dec 23, 2020
Paolo Invernizzi
Dec 23, 2020
Paolo Invernizzi
Dec 23, 2020
Paolo Invernizzi
Dec 24, 2020
Mathias LANG
Dec 24, 2020
Paolo Invernizzi
Dec 24, 2020
Mathias LANG
Dec 24, 2020
Paolo Invernizzi
Dec 24, 2020
Mathias LANG
Dec 29, 2020
Paolo Invernizzi
Dec 29, 2020
Paolo Invernizzi
Dec 25, 2020
Walter Bright
Dec 26, 2020
Guillaume Piolat
Dec 28, 2020
Per Nordlöw
Dec 29, 2020
Mathias LANG
Dec 29, 2020
Per Nordlöw
Release Candidate [was: Re: Beta 2.095.0]
Dec 30, 2020
Martin Nowak
Dec 30, 2020
Imperatorn
Dec 30, 2020
Paolo Invernizzi
Dec 30, 2020
Mathias LANG
Dec 30, 2020
Paolo Invernizzi
Dec 30, 2020
jmh530
Jan 01, 2021
tsbockman
December 20, 2020
Glad to announce the first beta for the 2.095.0 release, ♥ to the 61 contributors.

http://dlang.org/download.html#dmd_beta
http://dlang.org/changelog/2.095.0.html

As usual please report any bugs at
https://issues.dlang.org

-Martin

December 21, 2020
On Sunday, 20 December 2020 at 13:21:46 UTC, Martin Nowak wrote:
> Glad to announce the first beta for the 2.095.0 release, ♥ to the 61 contributors.
>
> http://dlang.org/download.html#dmd_beta
> http://dlang.org/changelog/2.095.0.html
>
> As usual please report any bugs at
> https://issues.dlang.org
>
> -Martin

Christmas present is coming... nice!
December 22, 2020
On Sunday, 20 December 2020 at 13:21:46 UTC, Martin Nowak wrote:
> Glad to announce the first beta for the 2.095.0 release, ♥ to the 61 contributors.
>
> http://dlang.org/download.html#dmd_beta
> http://dlang.org/changelog/2.095.0.html
>
> As usual please report any bugs at
> https://issues.dlang.org
>
> -Martin

> Bugzilla 21452: isCallable erroneously returns false on function templates

Thank you, Mr. Schroll!
December 23, 2020
On Sunday, 20 December 2020 at 13:21:46 UTC, Martin Nowak wrote:
> Glad to announce the first beta for the 2.095.0 release, ♥ to the 61 contributors.
>
> http://dlang.org/download.html#dmd_beta
> http://dlang.org/changelog/2.095.0.html
>
> As usual please report any bugs at
> https://issues.dlang.org
>
> -Martin

Thank you Martin,

Just  to be sure, is that expected behaviour? Or should I expect to have the a more precise instantiation point?
---
/Users/pinver/dlang/dmd-2.095.0-beta.1/osx/bin/dmd  -i -g -debug  src/foo.d
/Users/pinver/dlang/dmd-2.095.0-beta.1/osx/bin/../../src/phobos/std/traits.d(3727): Deprecation: function std.typecons.Nullable!long.Nullable.get_ is deprecated - Implicit conversion with alias Nullable.get this will be removed after 2.096. Please use .get explicitly.
/Users/pinver/dlang/dmd-2.095.0-beta.1/osx/bin/../../src/phobos/std/traits.d(3727): Deprecation: function std.typecons.Nullable!short.Nullable.get_ is deprecated - Implicit conversion with alias Nullable.get this will be removed after 2.096. Please use .get explicitly.
---

BTW, turning the deprecations from warnings to errors seems not to work (nothing is printed)
---
/Users/pinver/dlang/dmd-2.095.0-beta.1/osx/bin/dmd  -i -g -debug  src/foo.d
---

Thank you for your job!
December 23, 2020
On Wednesday, 23 December 2020 at 14:41:05 UTC, Paolo Invernizzi wrote:
> BTW, turning the deprecations from warnings to errors seems not to work (nothing is printed)
> ---
> /Users/pinver/dlang/dmd-2.095.0-beta.1/osx/bin/dmd  -i -g -debug  src/foo.d
> ---
>
> Thank you for your job!

sorry, I mean: `/Users/pinver/dlang/dmd-2.095.0-beta.1/osx/bin/dmd  -de -i -g  -debug  src/foo.d`
December 23, 2020
On 12/23/20 9:42 AM, Paolo Invernizzi wrote:
> On Wednesday, 23 December 2020 at 14:41:05 UTC, Paolo Invernizzi wrote:
>> BTW, turning the deprecations from warnings to errors seems not to work (nothing is printed)
>> ---
>> /Users/pinver/dlang/dmd-2.095.0-beta.1/osx/bin/dmd  -i -g -debug  src/foo.d
>> ---
>>
>> Thank you for your job!
> 
> sorry, I mean: `/Users/pinver/dlang/dmd-2.095.0-beta.1/osx/bin/dmd  -de -i -g -debug  src/foo.d`

So, this is a constant problem since this deprecation was introduced.

What is happening is that some speculative compilation is checking something via the get function. It might not make a difference, but the error message is useless (who knows where that traits call is triggered).

Most likely, it doesn't change anything. Therefore when you turn on the deprecation as an error, it doesn't affect compilation, it just fails in the speculation instead of succeeds. But the ultimate result doesn't actually change anything.

I can't wait until this deprecation has been finalized, because I hate seeing seas of deprecation messages I can't do anything about. 2.097 cannot come soon enough...

I'm also looking forward to being able to print Nullable!string values inside structs without an exception being thrown.

-Steve
December 23, 2020
On Wednesday, 23 December 2020 at 15:38:17 UTC, Steven Schveighoffer wrote:
> On 12/23/20 9:42 AM, Paolo Invernizzi wrote:
>> [...]
>
> So, this is a constant problem since this deprecation was introduced.
>
> [...]

Thanks Steve, as usual, a perfect explanation ...

December 24, 2020
On Wednesday, 23 December 2020 at 15:38:17 UTC, Steven Schveighoffer wrote:
>
> What is happening is that some speculative compilation is checking something via the get function. It might not make a difference, but the error message is useless (who knows where that traits call is triggered).

FYI, v2.095.0 *should* print the instantiation trace, so you can actually track down where it comes from. And the reason DMD now shows the trace is exactly because of this deprecation.

> Most likely, it doesn't change anything. Therefore when you turn on the deprecation as an error, it doesn't affect compilation, it just fails in the speculation instead of succeeds. But the ultimate result doesn't actually change anything.
>
> I can't wait until this deprecation has been finalized, because I hate seeing seas of deprecation messages I can't do anything about. 2.097 cannot come soon enough...

FYI, in theory we could use `__traits(isDeprecated)` to silence this. But I haven't looked at the code myself.

December 24, 2020
On Thursday, 24 December 2020 at 11:05:14 UTC, Mathias LANG wrote:
> On Wednesday, 23 December 2020 at 15:38:17 UTC, Steven Schveighoffer wrote:
>>
>> What is happening is that some speculative compilation is checking something via the get function. It might not make a difference, but the error message is useless (who knows where that traits call is triggered).
>
> FYI, v2.095.0 *should* print the instantiation trace, so you can actually track down where it comes from. And the reason DMD now shows the trace is exactly because of this deprecation.

The point is that the deprecation is coming from an external library, it would be great to have the precise instantiation point in that source code, so I was wondering if that dmd improvement [1] should print a more detailed trace.

[1] https://dlang.org/changelog/2.095.0.html#deprecation-context

December 24, 2020
On Thursday, 24 December 2020 at 11:38:11 UTC, Paolo Invernizzi wrote:
>
> The point is that the deprecation is coming from an external library, it would be great to have the precise instantiation point in that source code, so I was wondering if that dmd improvement [1] should print a more detailed trace.
>
> [1] https://dlang.org/changelog/2.095.0.html#deprecation-context

It does print a detailed stack trace (up to the first symbol that is not a template) if you don't use `-de`. If you use `-de`, since the checks in Phobos are `is(typeof(n.toString()))` or `__traits(compiles, n.toString())`, then it just changes whether or not the code compiles, and as a result changes the output of the program. A trivial example:

```
import std.stdio, std.typecons;
struct Foo {
    deprecated string toString() const { return "Oops"; }
}
void main () { writefln("%s", Foo.init); }
```

Will print, with v2.094.2 or before (dmd -run):
```
/usr/local/opt/dmd/include/dlang/dmd/std/format.d(3921): Deprecation: function foo.Foo.toString is deprecated
/usr/local/opt/dmd/include/dlang/dmd/std/format.d(4053): Deprecation: function foo.Foo.toString is deprecated
Oops
```

Not great. If you use `dmd -de -run`, you'll get:
```
Foo()
```

Notice the deprecations are gone, but so is the usage of the `toString` method. Using DMD v2.095.0-beta.1 with `-de` should give you the same output, but without `-de`:

```
% ~/dlang/dmd-2.095.0-beta.1/osx/bin/dmd -run foo.d
/Users/geod24/dlang/dmd-2.095.0-beta.1/osx/bin/../../src/phobos/std/format.d(3921): Deprecation: function foo.Foo.toString is deprecated
/Users/geod24/dlang/dmd-2.095.0-beta.1/osx/bin/../../src/phobos/std/format.d(4420):        instantiated from here: hasToString!(Foo, char)
/Users/geod24/dlang/dmd-2.095.0-beta.1/osx/bin/../../src/phobos/std/format.d(4053): Deprecation: function foo.Foo.toString is deprecated
/Users/geod24/dlang/dmd-2.095.0-beta.1/osx/bin/../../src/phobos/std/format.d(4430):        instantiated from here: formatObject!(LockingTextWriter, Foo, char)
/Users/geod24/dlang/dmd-2.095.0-beta.1/osx/bin/../../src/phobos/std/format.d(1875):        instantiated from here: formatValueImpl!(LockingTextWriter, Foo, char)
/Users/geod24/dlang/dmd-2.095.0-beta.1/osx/bin/../../src/phobos/std/format.d(576):        instantiated from here: formatValue!(LockingTextWriter, Foo, char)
/Users/geod24/dlang/dmd-2.095.0-beta.1/osx/bin/../../src/phobos/std/stdio.d(1661):        ... (1 instantiations, -v to show) ...
/Users/geod24/dlang/dmd-2.095.0-beta.1/osx/bin/../../src/phobos/std/stdio.d(4271):        instantiated from here: writefln!(char, Foo)
foo.d(5):        instantiated from here: writefln!(char, Foo)
Oops
```

So the feature works as intended, however `-de` is a dangerous trap, as it changes what is instantiated.
« First   ‹ Prev
1 2 3