Release D 2.108.0

2024-04-01 Thread Iain Buclaw via Digitalmars-d-announce

Glad to announce D 2.108.0, ♥ to the 36 contributors.

This release comes with 8 major changes and 36 fixed Bugzilla 
issues, including:


- In the language, named arguments for functions have been 
implemented and documented.

- In phobos, std.uni has been upgraded to Unicode 15.1.0.
- In dub, the fetch command now supports multiple arguments, 
recursive fetch, and is project-aware.


http://dlang.org/download.html
http://dlang.org/changelog/2.108.0.html

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

-Iain
on behalf of the Dlang Core Team



Re: Beta 2.108.0

2024-03-16 Thread Iain Buclaw via Digitalmars-d-announce
The RC for 2.108 has been released, which includes the following 
changes from the initial beta:


 - Named Arguments is now implemented and documented as a new 
feature in this release. The beta supports the feature, but was 
left undocumented while some remaining issues were being fixed.


 - Hexstrings now implicitly convert to integer arrays. The beta 
had introduced support to allow casting to arrays only.


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

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

-Iain
on behalf of the Dlang Core Team




Beta 2.108.0

2024-03-02 Thread Iain Buclaw via Digitalmars-d-announce
Glad to announce the first beta for the 2.108.0 release, ♥ to the 
35 contributors.


This release comes with 7 major changes and 48 fixed Bugzilla 
issues, including:


 - In the language, support has been added for Interpolated 
Expression Sequences.

 - In phobos, std.uni has been upgraded to Unicode 15.1.0.
 - In dub, the fetch command now supports multiple arguments, 
recursive fetch, and is project-aware.


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

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

-Iain
on behalf of the Dlang Core Team



Release D 2.107.1

2024-03-01 Thread Iain Buclaw via Digitalmars-d-announce

Glad to announce D 2.107.1, ♥ to the 6 contributors.

http://dlang.org/download.html

This point release fixes 15 issues over 2.107.0, see the 
changelog for more details.


http://dlang.org/changelog/2.107.1.html

-Iain
on behalf of the Dlang Core Team



Re: Bug fixes for Mac OSX landing in 2.107.1

2024-02-26 Thread Iain Buclaw via Digitalmars-d-announce

On Tuesday, 27 February 2024 at 06:08:51 UTC, Danilo wrote:

On Monday, 26 February 2024 at 12:55:32 UTC, Iain Buclaw wrote:
This implies that the **minimum required version of DMD** to 
build on Mac OSX 13+ will be 2.107.1 / 2.108.x.


Will DMD still work with macOS 12.7.x and Xcode 14.2?

The Mac Pro x64 (waste bin model) doesn‘t get any updates 
anymore, as it first came out in 2013.


Yes, all issues reported by the Xcode 15 linker were subtle 
corruptions of the mach-o format that are (mostly) silently 
accepted by the Xcode 14 and older linkers.


MacOS 10.7 remains to be the absolute minimum version supported 
due to the requirement of native TLS. This'll only be bumped to 
10.8/10.9 when coalesced sections get dropped 
(https://issues.dlang.org/show_bug.cgi?id=22464).


Bug fixes for Mac OSX landing in 2.107.1

2024-02-26 Thread Iain Buclaw via Digitalmars-d-announce

Hi,

Over the last 2-3 years, there's been a slow build-up of issues 
on MacOS that have now come home to roost, and they could no 
longer be ignored/worked arounded in CI as GHA has made Xcode 
15.0.1 the default SDK since ~end of January/February 2024.


**RESOLVED**: Linker errors
- [ld: symbol count from symbol table and dynamic symbol table 
differ](https://github.com/dlang/dmd/pull/16221)
  This was caused by off-by-one mismatch in codegen symbol 
counters for the two tables.
- [ld: unaligned pointer(s) for architecture 
x86_64](https://github.com/dlang/dmd/pull/16224) / warning: 
alignment (1) of atom 'anon' is too small and may result in 
unaligned pointers / warning: pointer not aligned at address
  This was caused by DMD forcing `__debug_line` sections to be 
emitted into the final executable to work around lack of 
backtrace support on OSX. This section now has the _correct_ 
flags assigned to it so it gets discarded at link-time - see 
notes on BREAKING changes.
- [ld: GOT load reloc does not point to a movq 
instruction](https://github.com/dlang/dmd/pull/16227)
  Sometimes it was only seen with `dmd -O`, sometimes caused by 
`long * int` expressions. The underlying cause was symbol 
references being emitted as `X86_64_RELOC_GOT_LOAD` in the 
relocation table, but the instruction that accessed the symbol 
wasn't `MOVQ`.
- [ld: address=0x0 points to section(2) with no 
content](https://github.com/dlang/dmd/pull/16222)
  This was triggered by g/shared array instantiated from a 
template and initialized with `[]` - such as the the variable 
`string[] rt_options = []` in D runtime - its empty initializer 
was being written to a data section that expected non-empty data.



**RESOLVED**: Linker warnings
- [ld: warning: pointer not aligned at 
__OBJC_PROTOCOL_$](https://github.com/dlang/dmd/pull/16219)
  This was caused by `extern(Objective-C)` functions and/or 
variables being emitted as `align(3)`.
- [ld: warning: no platform load command found, assuming: 
macOS](https://github.com/dlang/dmd/pull/16223)
  This was caused by a missing `LC_BUILD_VERSION` command in all 
compiled modules.  Jacob Carlborg did [the hard work years 
ago](https://github.com/dlang/dmd/pull/10476) to add support. 
Instead though a simplified version was committed that didn't 
include support for embedding CoreFoundation/framework/SDK 
version information in compiled objects - it wasn't necessary to 
fix the issue, and the linker fills in all SDK information for us 
anyway.


**WONTFIX**: Workarounds
- [ld: Assertion failed: (slot < 
_sideTableBuffer.size())](https://github.com/dlang/dmd/pull/16240) / ld: Assertion failed: (resultIndex < sectData.atoms.size())
  Whilst the cause is unknown, the trigger is by using DMD with 
Xcode 15.0.1.  The assumption is that the linker supplied with 
Xcode 15.0.1 is unstable/buggy as code generated by GCC/G++/G... 
also triggered this assertion.
  The confirmed fix is to upgrade to at least **Xcode 15.1** / 
CommandLineTools for Xcode 15.1.


**CHANGES**:
- **BREAKING**: File/line information is no longer embedded into 
the executable via `__debug_line` section.  On developer 
machines, backtraces will still work as expected as D runtime 
supports getting this information instead via the `atos` command. 
 Someone with a vested interest should look into adding `.dSYM` 
support to D runtime.  
(https://issues.dlang.org/show_bug.cgi?id=20510)
- Setting `MACOSX_DEPLOYMENT_TARGET` now results in its value 
being embedded into all compiled objects for macOS. An invalid 
setting will result in a compile-time error.
- As a result of all the above issues, it is impossible to build 
anything with DMD when using Xcode 15. The interim workaround to 
build DMD itself is to use LDC as the host compiler. This will be 
resolved as soon as 2.107.1 is released.
  This implies that the **minimum required version of DMD** to 
build on Mac OSX 13+ will be 2.107.1 / 2.108.x.


If there's interest in making an RC release ahead of 1st March so 
MacOS/x86 users can do any last minute checking, now would be the 
time to know. There's been no testing on any real world project.


Iain.


Re: real.sizeof

2024-02-05 Thread Iain Buclaw via Digitalmars-d-learn

On Monday, 5 February 2024 at 16:45:03 UTC, Dom DiSc wrote:

Why is real.sizeof == 16 on x86-systems?!?
Its the IEEE 754 extended format: 64bit mantissa + 15bit 
exponent + sign.

It should be size 10!
I mean, alignment may be different, but why wasting so much 
memory even in arrays?


Padding.

x86 ABI prefers things to be aligned, so on x86 it's 12 bytes, 
x86_64 16 bytes.  In both cases you don't get any extra precision 
over the 80-bits that x87 gives you.


Release D 2.107.0

2024-02-02 Thread Iain Buclaw via Digitalmars-d-announce

Glad to announce D 2.107.0, ♥ to the 37 contributors.

This release comes with 10 major changes and 61 fixed Bugzilla 
issues, including:


 - Unrecognized pragmas are no longer an error, but instead 
simply ignored.
 - Added `@core.attribute.standalone` for shared static module 
constructors.
 - In D runtime, a new module `core.stdc.stdatomic` has been 
implemented.



http://dlang.org/download.html
http://dlang.org/changelog/2.107.0.html

-Iain
on behalf of the Dlang Core Team



Beta 2.107.0

2024-01-02 Thread Iain Buclaw via Digitalmars-d-announce
Glad to announce the first beta for the 2.107.0 release, ♥ to the 
35 contributors.


This release comes with 9 major changes and 52 fixed Bugzilla 
issues, including:
- Unrecognized pragmas are no longer an error, but instead simply 
ignored.
- Added `@core.attribute.standalone` for shared static module 
constructors.
- In D runtime, a new module `core.stdc.stdatomic` has been 
implemented.


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

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

-Iain
on behalf of the Dlang Core Team



Release D 2.106.1

2024-01-01 Thread Iain Buclaw via Digitalmars-d-announce

Glad to announce D 2.106.1, ♥ to the 4 contributors.

http://dlang.org/download.html

This point release fixes a few issues over 2.106.0, see the 
changelog for more details.


http://dlang.org/changelog/2.106.1.html

-Iain
on behalf of the Dlang Core Team



Release D 2.106.0

2023-12-02 Thread Iain Buclaw via Digitalmars-d-announce

Glad to announce D 2.106.0, ♥ to the 33 contributors.

This release comes with...

- In the D language, it is now possible to statically initialize 
AAs.

- In dmd, there's a new `-nothrow` CLI flag.
- In dub, `dub init` now has a select menu for package format and 
license.


As always, you can find the release binaries and full changelog 
on the dlang.org site.


http://dlang.org/download.html
http://dlang.org/changelog/2.106.0.html

-Iain
on behalf of the Dlang Core Team



Re: First Beta 2.106.0

2023-11-07 Thread Iain Buclaw via Digitalmars-d-announce

On Friday, 3 November 2023 at 04:33:12 UTC, Andrej Mitrovic wrote:

On Thursday, 2 November 2023 at 09:13:55 UTC, Iain Buclaw wrote:

On Thursday, 2 November 2023 at 07:49:32 UTC, Imperatorn wrote:
Why is it named nothrow if what it's really doing is not 
adding the unwinders?
A nothrow switch could imply it's doing something in 
relationship to nothrow, which it doesn't (unless it's 
secretly enforcing nothrow in the codebase).


`-nothrow` is equivalent to putting `nothrow:` at the top of 
every compiled module.


That kind of goes against what it says in the changelog:



Recursively adding `nothrow:` was implied but I err towards 
brevity.



And it also mentions:


The switch does not affect semantic analysis


But surely it has effect on semantics? I assume scope 
statements are disallowed if -nothrow is set and would lead to 
compilation errors?


Right, statements that depend on exceptions as part of their 
operation can't possibly work because no unwind tables, eh 
regions, etc... are generated.


Re: First Beta 2.106.0

2023-11-02 Thread Iain Buclaw via Digitalmars-d-announce

On Thursday, 2 November 2023 at 07:49:32 UTC, Imperatorn wrote:
Why is it named nothrow if what it's really doing is not adding 
the unwinders?
A nothrow switch could imply it's doing something in 
relationship to nothrow, which it doesn't (unless it's secretly 
enforcing nothrow in the codebase).


`-nothrow` is equivalent to putting `nothrow:` at the top of 
every compiled module.


Re: First Beta 2.106.0

2023-11-02 Thread Iain Buclaw via Digitalmars-d-announce
On Thursday, 2 November 2023 at 02:07:13 UTC, Andrej Mitrovic 
wrote:

Does it also affect AAs in structs? For example:

```d
struct S
{
static int[int] x = [4:4];
}
```

Will this now work?


Yes, there are a few kinks that need ironing out though, 
hopefully before the RC in a couple weeks.


One open PR
https://github.com/dlang/dmd/pull/15744

and another found issue
https://issues.dlang.org/show_bug.cgi?id=24209


First Beta 2.106.0

2023-11-01 Thread Iain Buclaw via Digitalmars-d-announce
Glad to announce the first beta for the 2.106.0 release, ♥ to the 
33 contributors.


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

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

-Iain
on behalf of the Dlang Core Team



Release D 2.105.3

2023-11-01 Thread Iain Buclaw via Digitalmars-d-announce

Glad to announce D 2.105.3, ♥ to the 4 contributors.

http://dlang.org/download.html

This point release fixes a few issues over 2.105.3, see the 
changelog for more details.


http://dlang.org/changelog/2.105.3.html

-Iain
on behalf of the Dlang Core Team



Re: Spec for the ‘locality’ parameter to the LDC and GDC builtin magic functions for accessing special CPU prefetch instructions

2023-08-20 Thread Iain Buclaw via Digitalmars-d-learn

On Saturday, 19 August 2023 at 19:23:38 UTC, Cecil Ward wrote:


I’m trying to write a cross-platform function that gives access 
to the CPU’s prefetch instructions such as x86 
prefetch0/1/2/prefetchnta and AAarch64 too. I’ve found that the 
GDC and LDC compilers provide builtin magic functions for this, 
and are what I need. I am trying to put together a 
plain-English detailed spec for the respective builtin magic 
functions.


My questions:

Q1) I need to compare the spec for the GCC and LDC builtin 
magic functions’ "locality" parameter. Can anyone tell me if 
GDC and LDC have kept mutual compatibility here?




I'd have thought GCC and LLVM have mutual compatibility thanks to 
a common target API in Intel's `_mm_prefetch()` function (and in 
fact, the magic locality numbers match `_MM_HINT_*` constants).


```
#define _MM_HINT_T0 1
#define _MM_HINT_T1 2
#define _MM_HINT_T2 3
#define _MM_HINT_NTA 0
```

Q2) Could someone help me turn the GCC and LDC specs into 
english regarding the locality parameter ? - see (2) and (4) 
below.



https://gcc.gnu.org/projects/prefetch.html




Q3) Does the locality parameter determine which _level_ of the 
data cache hierarchy data is fetched into? Or is it always 
fetched into L1 data cache and the outer ones, and this 
parameter affects caches’ _future behaviour_?




It really depends on the CPU, and what features it has.

x86 SSE intrinsics are described in the x86 instruction manual, 
along with the meaning of T[012], and NTA.


https://www.felixcloutier.com/x86/prefetchh



Q3) Will these magic builtins work on AAarch64?



It'll work on all targets that define a prefetch insn, or it'll 
be a no-op.  Similarly one or both read-write or locality 
arguments might be ignored too.


DMD Beta 2.105.0

2023-07-16 Thread Iain Buclaw via Digitalmars-d-announce
Glad to announce the first beta for the 2.105.0 release, ♥ to the 
34 contributors.


This release comes with 10 major changes, including:

- In the compiler, assignment-style syntax is now allowed for 
`alias this`.
- In the library, integration with the Valgrind memcheck tool has 
been added to the garbage collector.

- In dub, there's a new `--d-versions` CLI flag.

As always, you can find the release binaries and full changelog 
on the dlang.org site.


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

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

-Iain
on behalf of the Dlang Core Team



Release D 2.104.0

2023-06-02 Thread Iain Buclaw via Digitalmars-d-announce

Glad to announce D 2.104.0, ♥ to the 38 contributors.

This release comes with 11 major changes, including:

- In the compiler, User Defined Attributes now parse template 
arguments.
- In the standard library, `std.typecons.Rebindable` now supports 
all types
- In dub, new properties `cSourcePaths` and `cImportPaths` have 
been added to pass C sources and add additional search paths for 
C headers to the compiler.


As always, you can find the release binaries and full changelog 
on the dlang.org site.


http://dlang.org/download.html
http://dlang.org/changelog/2.104.0.html

-Iain
on behalf of the Dlang Core Team


Re: Beta 2.104.0

2023-05-02 Thread Iain Buclaw via Digitalmars-d-announce

On Tuesday, 2 May 2023 at 03:08:00 UTC, zjh wrote:

On Tuesday, 2 May 2023 at 00:34:45 UTC, Iain Buclaw wrote:
Glad to announce the first beta for the 2.104.0 release, ♥ to 
the 36 contributors.





[104](https://dlang.org/changelog/2.104.0.html)
```d
alias Tint = int;
@Tint void f();
```
Here says not to use basic types as attributes, but the 
following example give it another basic type?

```d
@int void f();
```


The keyword here in the changelog is: **would**; that is to say, 
the compiler previously rejected basic types, but now they are 
accepted.


It was already allowed to put types in UDAs, but the parser 
would reject basic types written directly, requiring the use of 
an alias.


I'll have a think about how that entry could be rephrased to 
avoid confusion, though you are welcome to raise your own pull 
request to clarify the wording.


Beta 2.104.0

2023-05-01 Thread Iain Buclaw via Digitalmars-d-announce
Glad to announce the first beta for the 2.104.0 release, ♥ to the 
36 contributors.


This release comes with 11 major changes, including:

- In the compiler, User Defined Attributes now parse template 
arguments.
- In the standard library, `std.typecons.Rebindable` now supports 
all types
- In dub, new properties `cSourcePaths` and `cImportPaths` have 
been added to pass C sources and add additional search paths for 
C headers to the compiler.


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

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

-Iain
on behalf of the Dlang Core Team



Release D 2.103.1

2023-05-01 Thread Iain Buclaw via Digitalmars-d-announce

Glad to announce D 2.103.1, ♥ to the 5 contributors.

http://dlang.org/download.html

This point release includes three regression fixes, and three bug 
fixes over 2.103.0, see the changelog for more details.


http://dlang.org/changelog/2.103.1.html

-Iain
on behalf of the Dlang Core Team



Re: Release D 2.103.0

2023-04-04 Thread Iain Buclaw via Digitalmars-d-announce

On Monday, 3 April 2023 at 17:56:25 UTC, jmh530 wrote:

The changelog doesn't list the fix to log1p
https://github.com/dlang/phobos/pull/8712


Was there a bugzilla issue for it? Must have been missed.


Release D 2.103.0

2023-04-03 Thread Iain Buclaw via Digitalmars-d-announce

Glad to announce D 2.103.0, ♥ to the 43 contributors.

This release comes with 9 major changes, including:

- In the compiler, `-preview=dip25` is now enabled by default.
- In the standard library, std.uni Grapheme functions have been 
updated to conform to Unicode 15
- In dub, the `--color` argument now accepts the values `auto`, 
`never`, and `always`.


http://dlang.org/download.html
http://dlang.org/changelog/2.103.0.html

-Iain
on behalf of the Dlang Core Team


Re: Beta 2.103.0

2023-03-16 Thread Iain Buclaw via Digitalmars-d-announce

On Thursday, 2 March 2023 at 14:40:04 UTC, Iain Buclaw wrote:

Glad to announce the first beta for the 2.103.0 release


The release candidate for 2.103.0 is now available, which has 11 
bug fixes since the initial beta release.


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

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

-Iain
on behalf of the Dlang Core Team


Beta 2.103.0

2023-03-02 Thread Iain Buclaw via Digitalmars-d-announce
Glad to announce the first beta for the 2.103.0 release, ♥ to the 
43 contributors.


This release comes with 9 major changes, including:

- In the compiler, `-preview=dip25` is now enabled by default.
- In the standard library, std.uni Grapheme functions have been 
updated to conform to Unicode 15
- In dub, the `--color` argument now accepts the values `auto`, 
`never`, and `always`.


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

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

-Iain
on behalf of the Dlang Core Team



Release D 2.102.2

2023-03-01 Thread Iain Buclaw via Digitalmars-d-announce

Glad to announce D 2.102.2, ♥ to the 8 contributors.

This is the last point release for 2.102 series, and the beta for 
2.103 will be released shortly.


http://dlang.org/download.html

This point release fixes a few issues over 2.102.1, see the 
changelog for more details.


http://dlang.org/changelog/2.102.2.html

-Iain
on behalf of the Dlang Core Team



Re: Release D 2.102.0

2023-02-15 Thread Iain Buclaw via Digitalmars-d-announce

Glad to announce D 2.102.1, ♥ to the 6 contributors.

http://dlang.org/download.html

This point release fixes a few issues over 2.102.0, see the 
changelog for more details.


http://dlang.org/changelog/2.102.1.html

-Iain
on behalf of the Dlang Core Team



Re: Release D 2.102.0

2023-02-13 Thread Iain Buclaw via Digitalmars-d-announce

On Sunday, 5 February 2023 at 01:59:47 UTC, Andrej Mitrovic wrote:

On Thursday, 2 February 2023 at 12:30:50 UTC, Iain Buclaw wrote:

http://dlang.org/download.html


Seems there's problems with the installer script: 
https://issues.dlang.org/show_bug.cgi?id=23671


Indeed, it's not downloading the *new* version of 
https://dlang.org/d-keyring.gpg


As a workaround remove ~/dlang/d-keyring.gpg and try again.


Re: Release D 2.102.0

2023-02-13 Thread Iain Buclaw via Digitalmars-d-announce
Glad to announce the first beta for the 2.102.1 point release, ♥ 
to the 6 contributors.


This fixes two breaking regressions found in dub 1.31.0 after the 
initial release.


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

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

-Iain
on behalf of the Dlang Core Team



Re: Release D 2.102.0

2023-02-02 Thread Iain Buclaw via Digitalmars-d-announce

On Thursday, 2 February 2023 at 17:22:46 UTC, Ali Çehreli wrote:
I am aware how complex unicode collation is[1] but I somehow 
find it very wrong to list Ömer at the end. :)


[...]
> Steven Schveighoffer
> Vladimir Panteleev
> Walter Bright
> Ömer Faruk IRMAK

Obviously because I am used to the Turkish alphabet but in any 
case because Ö is very much related to O, I find it universally 
better to list Ö right after O. (The same should be for all 
latin based characters.)


I see there is std.uni.icmp which uses

  dmd/std/internal/unicode_tables.d

but it doesn't help because the array fullCaseTable in there 
seems to be about equivalence (e.g. of ß and ss). I think we 
need a "mostly correct" collation for latin based characters.




You are more than welcome to raise a PR to fix the sort. :-)

https://github.com/dlang/tools/blob/master/contributors.d#L107-L113



Release D 2.102.0

2023-02-02 Thread Iain Buclaw via Digitalmars-d-announce

Glad to announce D 2.102.0, ♥ to the 40 contributors.

This release comes with support for multiple message arguments in 
`static assert()`, stack allocated `scope` array literals, a new 
preview switch to add support for `@system` variables, and many 
more.


Downloads and full changelog are available from the dlang site.

http://dlang.org/download.html
http://dlang.org/changelog/2.102.0.html

-Iain
on behalf of the Dlang Core Team


Re: GDC documentation is online and 13.x development updates.

2023-01-22 Thread Iain Buclaw via Digitalmars-d-announce

On Sunday, 15 January 2023 at 19:00:50 UTC, Johan wrote:

On Tuesday, 6 December 2022 at 12:13:59 UTC, Iain Buclaw wrote:

Hi,

There is now (long overdue) expanded documentation of the 
user-facing features of GDC online on GCC's documentation site.


https://gcc.gnu.org/onlinedocs/gdc/


Just now, I had trouble finding this. I don't think there is a 
pointer on GDC's own website? (https://gdcproject.org/)




Hi Johan,

Good point, I really need to give a bit more TLC to the site 
repository.


Re: Beta 2.102.0

2023-01-15 Thread Iain Buclaw via Digitalmars-d-announce

On Sunday, 1 January 2023 at 10:10:07 UTC, Iain Buclaw wrote:
Glad to announce the first beta for the 2.102.0 release, ♥ to 
the 37 contributors.


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



The release candidate for the 2.102.0 release is now out.


Re: Release D 2.101.2

2023-01-02 Thread Iain Buclaw via Digitalmars-d-announce

On Monday, 2 January 2023 at 18:30:38 UTC, Mike Bierlee wrote:

The Windows installer download link is broken on the main page:

https://downloads.dlang.org/releases/2022/dmd-2.101.2.exe


Still says 2022.


I have no idea why its using year-based links to the releases.  
I've changed that to version-based here 
https://github.com/dlang/dlang.org/pull/3484


Beta 2.102.0

2023-01-01 Thread Iain Buclaw via Digitalmars-d-announce
Glad to announce the first beta for the 2.102.0 release, ♥ to the 
37 contributors.


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

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

-Iain
on behalf of the Dlang Core Team



Release D 2.101.2

2022-12-31 Thread Iain Buclaw via Digitalmars-d-announce

Glad to announce D 2.101.2, ♥ to the 3 contributors.

http://dlang.org/download.html

This point release fixes a few issues over 2.101.1, see the 
changelog for more details.


http://dlang.org/changelog/2.101.2.html

-Iain
on behalf of the Dlang Core Team



Re: Release D 2.101.0

2022-12-27 Thread Iain Buclaw via Digitalmars-d-announce

On Tuesday, 27 December 2022 at 19:22:41 UTC, Les De Ridder wrote:

I've been able to reduce it to this:

`void f() { import std.file : exists; exists(""); }`

(or `void f() { import std; exists(""); }`)

Create two files (`a.d` and `b.d`) with this code.

Build with: `dmd.exe -m32 -inline -O a.d b.d`

Removing any of the flags allows the compilation to proceed.


1. Raise a bug report

2. Use digger to bisect dmd and locate which change introduced it.


Release D 2.101.1

2022-12-15 Thread Iain Buclaw via Digitalmars-d-announce

Glad to announce D 2.101.1, ♥ to the 11 contributors.

http://dlang.org/download.html

This point release fixes a few issues over 2.101.0, see the 
changelog for more details.


http://dlang.org/changelog/2.101.1.html

-Iain
on behalf of the Dlang Core Team



GDC documentation is online and 13.x development updates.

2022-12-06 Thread Iain Buclaw via Digitalmars-d-announce

Hi,

There is now (long overdue) expanded documentation of the 
user-facing features of GDC online on GCC's documentation site.


https://gcc.gnu.org/onlinedocs/gdc/  (also in 
[PDF](https://gcc.gnu.org/onlinedocs/gdc.pdf) or 
[PostScript](https://gcc.gnu.org/onlinedocs/gdc.ps.gz) or an 
[HTML tarball](https://gcc.gnu.org/onlinedocs/gdc-html.tar.gz))


The GDC options documentation has been around since the start.  
What's new is the language reference section, covering code 
generation choices specific to GDC - what attributes are 
supported, intrinsics, pragmas, predefined versions, language 
extensions, missing features and deviations from spec, ...


More could be added or elaborated upon, such as what linkage do 
different symbols get, mixed language programming with C and C++, 
the anatomy of a TypeInfo and ModuleInfo object, and so on.  This 
is enough as a first revision just to get it off the ground.


Being a first revision, expect some grammar mistakes, and unclear 
use of language in some parts throughout.


If any curious reader spots any such mistakes, or thinks there 
needs to be more clarity in some phrase or paragraph, you can 
either [raise a bugzilla issue against 
GDC](https://gcc.gnu.org/bugzilla/enter_bug.cgi?product=gcc=d=13.0) or name and shame me here.


Meanwhile GDC-13 development is still tracking DMD's mainline 
branch, no plans to switch to a stable D2 release just yet.  DMD 
releases will resume a predictable cadence in the New Year, 
starting with the 2.102-beta release in January, meaning 
2.102-final in February.  So the expected D2 version GDC-13 would 
be using is v2.103.1 by the time our May release comes around.


Regards,
Iain.


Re: D demangler for C++

2022-11-30 Thread Iain Buclaw via Digitalmars-d-announce

On Monday, 28 November 2022 at 16:16:43 UTC, Witold Baryluk wrote:

On Monday, 28 November 2022 at 12:48:15 UTC, max haughton wrote:


Wouldn't some of those tools already have one via libiberty?

https://github.com/gcc-mirror/gcc/blob/master/libiberty/d-demangle.c


`libiberty` has way more things than just D demangler. And some 
projects might not be comfortable with its licensing. And 
libiberty uses autoconf / automake, which is just gross for 
most people.


The idea is to have something simpler, portable (zero conf), 
just for this task, so it is as easy as possible to integrate 
and have flexible licensing.


Many of the tools do not use libiberty, but just call 
`abi::__cxa_demangle` for example. Take a look for for a 
heaptrack tool: 
https://github.com/KDE/heaptrack/blob/master/src/interpret/heaptrack_interpret.cpp#L40-L56


You are free to use `libiberty` if you want.

My demangler is just another option.


As the author, you're free to re-license that file as whatever so 
long as you email me for permission.


A clean-room implementation would likely be better though - 
libibert/d-demangle.c comes with backwards compatibility baggage 
that anyone implementing a tool/library today would not be 
interested in.


Re: Release D 2.101.0

2022-11-16 Thread Iain Buclaw via Digitalmars-d-announce

On Thursday, 17 November 2022 at 02:35:14 UTC, jmh530 wrote:


I'm not sure what the typically gets picked up, but I had done 
the search at the link below:

https://github.com/dlang/dmd/pulls?q=is%3Apr+is%3Amerged+ImportC+
and it didn't look like any of the recent bug fixes were listed 
on the changelog (I only see 23123 and 23340).


So for instance:
https://github.com/dlang/dmd/pull/14528
https://github.com/dlang/dmd/pull/14509
https://github.com/dlang/dmd/pull/14508
https://github.com/dlang/dmd/pull/14490
https://github.com/dlang/dmd/pull/14485
https://github.com/dlang/dmd/pull/14481
https://github.com/dlang/dmd/pull/14480


I've just ran `rdmd -version=Contributors_Lib changed 
v2.100.2..v2.101.0` with my [hacked version of 
tools/changed.d](https://forum.dlang.org/post/jhmjyccxjxfrnboea...@forum.dlang.org), and all of a sudden I get "209 fixed Bugzilla issues" from "72 contributors".  My faith in git log retrieving correct information has plummeted. :-)


I'll push the fixed generated list into dlang.org, thankfully 
we'll never have to deal with this again (unless - queue dramatic 
three-beat sting - phobos is merged into dmd/druntime too).


Re: Release D 2.101.0

2022-11-16 Thread Iain Buclaw via Digitalmars-d-announce

On Wednesday, 16 November 2022 at 20:51:19 UTC, jmh530 wrote:


Thanks again, but it doesn't look like the changelog is picking 
up everything.




It really would help if you provide some bugzilla urls or PRs 
that you think should have been picked up.


Granted, I'm not sure exactly when the deadline is, but I see a 
whole bunch of PRs merged from Walter on ImportC on the Github 
repo, but only one ImportC item listed in the changelog under 
DMD compiler fixes (and that looks like this is actually a 
druntime PR). The one after that seems to be a phobos bug fix.


Freeze was on 11th October.


Release D 2.101.0

2022-11-15 Thread Iain Buclaw via Digitalmars-d-announce

Glad to announce D 2.101.0, ♥ to the 63 contributors.

This release comes with shortened method syntax enabled by 
default, new bit-field support added as a preview feature, a new 
`std.typecons.SafeRefCounted` type that can be used in `@safe`, 
numerous improvements to dub (including colorized output), and 
many more.


http://dlang.org/download.html
http://dlang.org/changelog/2.101.0.html

-Iain
on behalf of the Dlang Core Team


Re: Release D 2.100.2

2022-11-04 Thread Iain Buclaw via Digitalmars-d-announce
On Friday, 4 November 2022 at 12:39:04 UTC, Guillaume Piolat 
wrote:

On Friday, 4 November 2022 at 02:44:57 UTC, Iain Buclaw wrote:
On Tuesday, 1 November 2022 at 21:56:39 UTC, Ruby The Roobster 
wrote:

On Tuesday, 1 November 2022 at 19:57:11 UTC, JN wrote:
Windows is showing SmartScreen warnings when trying to run 
the Windows installer. Also, the installed version reports 
as v2.100.2-dirty.


The next few releases are unsigned as those with the keys 
cannot be contacted (or, that's from what I've heard.)


Code signing certs have been expired for nearly two years now, 
and are no longer functional.  It is not yet decided what this 
should be replaced with, granted that buying a cert now is 
both eye-wateringly more expensive compared to 2016, and 
appears to force you to have some form of 2FA - be it hardware 
token or cloud signing platform.


Last time I had to do this:

Basically you have Certum.pl which provides cloud-signing, this 
company responds quickly, getting a individual OV certificate 
takes about 2-3 days.
"cloud" signing with needs a phone token, a phone app 
SimplySign, that last 15 minutes or so.




If this can be distributed between a group of people - let's say 
six or more - that might be OK, but not exactly as seamless as, 
say, just trigger a GitHub runner pipeline an walk away.


On the other hand, .p12/.pfx vendors are almost entirely 
COMODO/Sectigo now, it works offline, getting a certificate is 
more painful with them and will require a hardware token even 
for OV beginning this month.


0. It's less hassle not to do anything, but well we could have 
a supply-chain attack one day.
1. If cloud/simplysign workflow is OK, Certum may be less 
hassle.
2. Possibly safer / less problems in build to just get the EV 
from Sectigo in a hardware token. Especially if you commit the 
secret in CI.


Since November signing will require hardware token or private 
key in cloud (2FA).


What does in a hardware token mean for us? Is it required to have 
it to hand every time we have to sign a beta, rc, final release 
binary?  Does it bound us to a specific OS because of locked in 
proprietary tools?  In what way would it hamper the ability to 
sign built binaries on a virtual machine, in a remote server, 
behind a read-only console UI?


Re: Release D 2.100.2

2022-11-03 Thread Iain Buclaw via Digitalmars-d-announce
On Tuesday, 1 November 2022 at 21:56:39 UTC, Ruby The Roobster 
wrote:

On Tuesday, 1 November 2022 at 19:57:11 UTC, JN wrote:
Windows is showing SmartScreen warnings when trying to run the 
Windows installer. Also, the installed version reports as 
v2.100.2-dirty.


The next few releases are unsigned as those with the keys 
cannot be contacted (or, that's from what I've heard.)


Code signing certs have been expired for nearly two years now, 
and are no longer functional.  It is not yet decided what this 
should be replaced with, granted that buying a cert now is both 
eye-wateringly more expensive compared to 2016, and appears to 
force you to have some form of 2FA - be it hardware token or 
cloud signing platform.


Re: D Language Foundation October 2022 Quarterly Meeting Summary

2022-11-02 Thread Iain Buclaw via Digitalmars-d-announce

On Wednesday, 2 November 2022 at 04:42:06 UTC, Mike Parker wrote:

## Iain
For the benefit of the industry folks who only join us in the 
quarterlies, Iain recapped some of the things he'd covered in 
the two previous monthly meetings, such as the move to 
Backblaze for downloads.dlang.org and docharchives.dlang.io, 
the transition to Cloudflare that gives us the benefit of free 
data transfer with Backblaze, and the general tidying up of the 
dlang.io namespace.


He then said that Martin Nowak will not be doing any more 
releases of the D language. Iain had been going through the 
build scripts that we currently have and figuring out what 
needs to be done to tailor them to run in GitHub Actions. It 
was taking much longer than he had anticipated. In the interim, 
he thought he could at least merge master into stable and get 
some 2.101.0 alpha builds set up by hand. (He then [announced 
the first beta on October 
17](https://forum.dlang.org/thread/etvlqbomriskyeihz...@forum.dlang.org).)




The release candidate is out now!

https://dlang.org/download.html

We plan to do v2.101.0 release on the 14th November.

Next, he gave us a summary of his experience at the GNU 
Cauldron where he attended a meetup of GCC/GDB maintainers. He 
reported that there are some really interesting things going on 
with GCC internals regarding the direction in which they're 
taking the compiler, including several things we're doing 
already. For example, they're adding options to automatically 
initialize all static variables to 0 or a bitmask. This sort of 
thing is good news for him, as he currently has to do all the 
memsets by hand in GDC. It's a win if the middle-end can do 
this for him. If you're interested in all the GCC internal 
changes that Iain was gushing about and how he can benefit from 
them in GDC, please ask him :-)




Correction, initialize all *local* variables. This new feature of 
GCC was added to increase the security and predictability of a 
program by preventing uninitialized memory disclosure and use.


This really shifts the dynamics between front-end (language 
implementation) and middle-end (compiler framework), because now, 
if GCC fails to zero out all bits in an object, it's no longer a 
GDC bug, rather a GCC security issue. :-)


Re: Beta 2.101.0

2022-11-01 Thread Iain Buclaw via Digitalmars-d-announce

On Monday, 17 October 2022 at 11:35:22 UTC, Iain Buclaw wrote:
Glad to announce the first beta for the 2.101.0 release, ♥ to 
the 299 contributors.


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



Release Candidate is live now.


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

-Iain


on behalf of the Dlang Core Team.


Re: Beta 2.101.0

2022-10-18 Thread Iain Buclaw via Digitalmars-d-announce

On Tuesday, 18 October 2022 at 22:04:50 UTC, Anonymouse wrote:

On Monday, 17 October 2022 at 11:35:22 UTC, Iain Buclaw wrote:

[...]


Thanks!

Question. From the changelog;

Posix (excl. Darwin): Switch default GC signals from SIGUSR1/2 
to SIGRTMIN/SIGRTMIN+1


What should I tell gdb to handle to catch those? `SIG33` and 
`SIG34`?


Check whether it is already stopping on those signals.
```
(gdb) handle SIG33 SIG34
SignalStop  Print   Pass to program Description
SIG33 Yes   Yes Yes Real-time event 33
SIG34 Yes   Yes Yes Real-time event 34
```

If not, append `stop` to the above command.


Re: Beta 2.101.0

2022-10-18 Thread Iain Buclaw via Digitalmars-d-announce

This has been fixed, ♥ to the 62 contributors. ;-)


Re: Beta 2.101.0

2022-10-17 Thread Iain Buclaw via Digitalmars-d-announce

On Monday, 17 October 2022 at 12:51:58 UTC, rassoc wrote:

On 10/17/22 13:35, Iain Buclaw via Digitalmars-d-announce wrote:
Glad to announce the first beta for the 2.101.0 release, ♥ to 
the 299 contributors.


Thank you and congrats on the first (beta) release as the new 
release manager!


But say, what's happening with the linked issues? Clicking the 
first few goes back to stuff submitted in 2006 and fixed in 
2012ish. Might also explain the high contributor count, some of 
these names haven't been active in D for years.


DMD and D Runtime were merged together into one repository, this 
includes all histories, so I suspects it's picking up all authors 
from that.


You can verify the what was read in by the changelog tools by 
running:

```
git log --pretty='format:%aN|%aE' v2.100.2..v2.101.0-beta.1 | 
sort -u

```

See https://github.com/dlang/tools/blob/master/contributors.d#L81

I think for this release only, we can work around this by using 
pathspecs to exclude druntime.


```
(
  git -C dmd log --pretty='format:%aN|%aE' 
v2.100.2..upstream/stable ':!druntime'
  git -C dmd log --pretty='format:%aN|%aE' 
v2.100.2..upstream/stable druntime
  git -C druntime log --pretty='format:%aN|%aE' 
v2.100.2..upstream/stable

) | sort -u
```


Beta 2.101.0

2022-10-17 Thread Iain Buclaw via Digitalmars-d-announce
Glad to announce the first beta for the 2.101.0 release, ♥ to the 
299 contributors.


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

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

-Iain


Re: Generate a pointer to a method of a struct

2022-10-14 Thread Iain Buclaw via Digitalmars-d-learn

On Friday, 14 October 2022 at 18:34:58 UTC, kdevel wrote:
dmd and gdc optimize the lambda invocations away. Nonetheless 
the expression looks somewhat too big. To overcome this I tried 
to generate the function pointer outside of the struct:


```
auto funcptr (alias method) ()
{
   return 
}
  :
  fun = funcptr!bar;
  :
```

Which works but neither dmd nor gdc were able to optimize the 
additional function call away.


pragma(inline, true)
auto funcptr (alias method) ()



Re: Release D 2.100.2

2022-09-22 Thread Iain Buclaw via Digitalmars-d-announce

On Sunday, 11 September 2022 at 08:34:40 UTC, Martin Nowak wrote:

Glad to announce D 2.100.2, ♥ to the 18 contributors.

http://dlang.org/download.html

This point release fixes a few issues over 2.100.2, see the 
changelog for more details.


http://dlang.org/changelog/2.100.2.html

-Martin


Thanks for your hard work and effort doing this!  Not nearly 
enough praise has been given for you keeping this up for many 
years.


Wish you all the best!


Re: GCC 12.2 Released (D v2.100.1)

2022-09-08 Thread Iain Buclaw via Digitalmars-d-announce

On Wednesday, 7 September 2022 at 21:46:26 UTC, Per Nordlöw wrote:

On Friday, 19 August 2022 at 11:36:09 UTC, Iain Buclaw wrote:

GCC version 12.2 has been released.


Thanks again, Ian.

What are the options for installing GDC 12.2 on Ubuntu 22.04? 
GCC PPA or build from source?


That'd be a question for the package maintainer.  I should be 
meeting them next week at a conference, so can ask why GCC 12.1 
was never landed in LTS.


The usual PPA to go to for latest toolchain builds is 
https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/ppa


Re: D Language Foundation July 2022 Quarterly Meeting Summary

2022-09-01 Thread Iain Buclaw via Digitalmars-d-announce

On Sunday, 28 August 2022 at 10:37:03 UTC, Mike Parker wrote:


Since the meeting, Iain and I have set up a new server for the 
archived downloads. We've moved away from AWS and are now using 
Backblaze (with free bandwidth, thanks to the Bandwith Alliance 
and our use of Cloudflare). All 235.2 GB of DMD downloads have 
been moved. Iain can correct me if I'm wrong, but I believe 
this is active right now, so anything you download from 
downloads.dlang.org will come from there. As for the 
code-signing certificate, we're trying to decide on an option 
that's best for us. In the meantime, the last I heard, Martin 
Nowak was going to put out a release of 2.100.1 without signing 
the Windows executable.




The new download archive on Backblaze is still on stand-by for 
now.  After the 2.100.2 release proper has gone out, we'll make 
the switch.


What is active right now on Backblaze is the revival of 
https://docarchives.dlang.io


Re: Beta 2.100.2

2022-08-31 Thread Iain Buclaw via Digitalmars-d-announce

On Wednesday, 31 August 2022 at 15:48:05 UTC, matheus wrote:
On Wednesday, 31 August 2022 at 13:20:51 UTC, Martin Nowak 
wrote:

Glad to announce the first beta for the 2.100.2 point release,


Thanks.

N.B.: We had some delays to clarify the expired EV certificate 
and the next releases will ship without signed Windows 
binaries due to the complications and cost of EV certificates.


Is possible to share the costs for this?



Anywhere in the ballpark of an $750 to $1300 annual fee. Can only 
give an estimate as on top of the eye-watering EV prices, there 
may be more equally high fees for attestation and cloud signing.


To put that in context, the original certificate ordered in 2018 
cost only $267 and was valid for **3 years**.  That's a price 
inflation of over 150% year-on-year!


The process has gotten more complex too, as it is now required to 
have some sort of [hardware 
token](https://cabforum.org/2022/04/06/ballot-csc-13-update-to-subscriber-key-protection-requirements/) in order to sign, not exactly CI pipeline friendly. Cloud-based HSM solutions exist, but at an opaque cost, and our current workflow will still be broken after getting it set-up anyway.


All this for at most only 12 signed Windows binaries per year 
(maybe 36 if you include the beta and rc releases).  It's getting 
hard to justify proceeding with this cost unless we are *really* 
confident with just exactly what we are doing.


I've only come across one other language compiler that has an 
open issue for a lack of code signed release binaries.  It seems 
that an agreement was made with the Mozilla foundation to use 
their [autograph 
service](https://github.com/mozilla-services/autograph), but 
they've made no progress on it for the last 7 years, and there 
are still no signed releases.


No one has raised an issue so far for all DMD releases since that 
occurred in the last 12 months, so either lack of signing isn't 
an problem, or people are just ignoring/working around whatever 
warning messages you might get for running unsigned binaries (NB: 
haven't used Windows since 2003 so I have no clue what happens 
when you run an unsigned binary).


Re: GCC 12.2 Released (D v2.100.1)

2022-08-19 Thread Iain Buclaw via Digitalmars-d-announce
On Friday, 19 August 2022 at 15:38:01 UTC, Ruby The Roobster 
wrote:

On Friday, 19 August 2022 at 13:44:35 UTC, bachmeier wrote:

On Friday, 19 August 2022 at 11:36:09 UTC, Iain Buclaw wrote:


- Updated the D front-end from v2.100.0-rc1 to v2.100.1.


GDC is now ahead of DMD?


No.  It's just that the download link for v2.100.1 is broken, 
so the current version was changed to display v2.100.0.


Not quite, binaries just haven't been built yet due to 
certificate signing issues breaking the current workflow (that 
and the process is all reliant on one person who no longer has 
any free time).  But that's another matter.


GCC 12.2 Released (D v2.100.1)

2022-08-19 Thread Iain Buclaw via Digitalmars-d-announce

Hi,

GCC version 12.2 has been released.

GCC 12.2 is the first bug-fix release from the GCC 12 branch 
containing important fixes for regressions and serious bugs in 
GCC 12.1 with 11 bugs fixed in GDC since the previous release.


Notable changes:

- Updated the D front-end from v2.100.0-rc1 to v2.100.1.

- Linkage of `pragma(inline, true)` functions has been changed to 
linkonce/comdat, as they are now compiled into every compilation 
unit they are referenced from.  If you were previously getting 
unresolved references to pragma inline symbols at link-time, this 
has now been fixed.


If you encounter difficulties, while you may contact me directly, 
it is better to visit https://gcc.gnu.org/bugzilla and file a 
problem report.


There's also the 
[#gdc](https://dlang.slack.com/archives/C6LTP6MV1) channel on the 
Dlang Slack or [#d.gdc](irc://irc.libera.chat/d.gdc) on 
Libera.Chat IRC (or try your luck on 
[Discord](https://discord.gg/hj6ByvrVus)) for any general 
queries, support, consulting, and/or social.


Until the next major/minor release...

Regards,
Iain.


Re: DConf 2022 pre+watch party!

2022-07-31 Thread Iain Buclaw via Digitalmars-d-announce

On Thursday, 28 July 2022 at 16:09:46 UTC, Rikki Cattermole wrote:

Hello everyone!

It is back, DConf IRL.

To celebrate we will have a bit of a pre-party over in the 
Discord voice channel, as well as a bit of a watch party going 
on during the conference live streams.


We may switch over to Jitsi later on depending on how the IRL 
BeerConf goes and if someone ends up joining from there.


Discord invite link: https://discord.gg/bMZk9Q4

It all starts tomorrow, so stock up because it's going to be 6 
days of D!


How did this work out?  :-)

Shall we start a jitsi meet-up?


Re: D News April-May - DConf '22 BeerConf Has a Sponsor!

2022-05-29 Thread Iain Buclaw via Digitalmars-d-announce

On Sunday, 29 May 2022 at 12:41:18 UTC, Mike Parker wrote:
GDC 12.1 (the first GDC release with the D version of the D 
backend),




That should also be frontend, not backend. :-)


Re: GCC 12.1 Released (D v2.100-rc.1)

2022-05-15 Thread Iain Buclaw via Digitalmars-d-announce

On Friday, 6 May 2022 at 11:57:47 UTC, Iain Buclaw wrote:

Hi,

I am proud to announce another major GCC release, 12.1.

This year, the biggest change in the D front-end is the version 
bump from v2.076.1 to 
**[v2.100.0-rc.1](https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=b4acfef1342097ceaf10fa935831f8edd7069431)**.  For the full list of front-end changes, please read the [change log on dlang.org](https://dlang.org/changelog/2.100.0.html). As and when DMD releases new minor releases of v2.100.x, they will be backported into the next minor release of GCC.




The GCC-12 release branch has now been [sync'd 
up](https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=0556c356e541aa106dcc4276db429ee0d2343d99) with the release of DMD v2.100.0.


Re: GCC 12.1 Released (D v2.100-rc.1)

2022-05-11 Thread Iain Buclaw via Digitalmars-d-announce

On Wednesday, 11 May 2022 at 19:08:15 UTC, Anonymouse wrote:

gcc-d 11.2.0-4 has been removed from the [core] repository.


Does anyone know what's going on there?


You should ask the package maintainers.

https://github.com/archlinux/svntogit-packages/commit/6ebddb843f621263f4ce6e5a8b2b6856f337c218


Re: GCC 12.1 Released (D v2.100-rc.1)

2022-05-07 Thread Iain Buclaw via Digitalmars-d-announce

On Saturday, 7 May 2022 at 20:14:51 UTC, Witold Baryluk wrote:
Good you mentioned that! I was not aware of the sponsorship 
program, and now that I know, I gladly will chip in (well, just 
did it moments ago). For testing infrastructure, I would 
suggest tracking compilation speed and memory usage and output 
binary size of GDC on amd64 and aarch64 at least (to detect 
compiler getting slower, or due to growth of Phobos / 
druntime), and having a public website showing this data. 
Something like this maybe https://fast.vlang.io/



Cheers.


Thanks for the suggestion.  Vladimir did in fact do that for dmd 
last decade, it only ran for a couple years though.  Have been 
thinking about maybe reviving it every so often.


https://blog.cy.md/2015/05/05/is-d-slim-yet/

Adam (maybe in a TWID post) did a few months back lament that D1 
vs D2 equivalent code compiles slower with the latter.  The bulk 
of which in the trivial case came from Druntime and how many 
modules are imported (D1 object.d had no imports, D2 object.d 
imports around 25 modules).  Remove the excessive imports and the 
original speed was observed again.  That's only one small example 
though of where perceived slowness comes from the library 
becoming more complex over time - and I expect it only to 
increase as more of the old opaque compiler-library interface is 
replaced with a templated interface that exposes the guts of what 
each helper does (for improved run-time performance, of course).


Re: GCC 12.1 Released (D v2.100-rc.1)

2022-05-06 Thread Iain Buclaw via Digitalmars-d-announce

On Friday, 6 May 2022 at 13:30:41 UTC, Steven Schveighoffer wrote:
Why is this news not captured 
[here](https://gcc.gnu.org/gcc-12/changes.html)?


I would have expected to see it in the language specific 
changes.




I need some more time to push in that content to the GCC site.  
Expect it some time over the next fortnight.


Re: Problem with GC - linking C++ & D (with gdc)

2022-04-26 Thread Iain Buclaw via Digitalmars-d-learn

On Tuesday, 26 April 2022 at 10:23:15 UTC, Claude wrote:

Hello,



Hello,

<%--SNIP--%>



Does anyone have any idea what's going on?

(if I just compile a single D file with "int main() { int* a = 
new int(42); return *a; }", it works as intended.)


The `new` keyword requests the druntime GC to allocate memory, 
however you haven't initialized the D run-time in your program.


main.cpp
```D
extern "C" int rt_init();
extern "C" const int* ct_parse();

int main(int argc, char ** argv)
{
rt_init();
return *ct_parse();
}
```


Re: gdc or ldc for faster programs?

2022-03-09 Thread Iain Buclaw via Digitalmars-d-learn
On Monday, 31 January 2022 at 10:33:49 UTC, Siarhei Siamashka 
wrote:

I wonder if GDC can do the same?


GDC as a front-end doesn't dictate what the optimization passes 
are doing, nor does it have any real control what each level 
means.  It is only ensured that semantic doesn't break because of 
an optimization pass.


Re: Beerconf February 2022

2022-02-25 Thread Iain Buclaw via Digitalmars-d-announce
On Saturday, 12 February 2022 at 22:20:09 UTC, Steven 
Schveighoffer wrote:

# BEERCONF



Hi,

Beerconf is inviting you to a meeting.

Join the meeting: https://meet.jit.si/Dlang2022FebruaryBeerConf
Password: `__traits(parameter)`

**How do I join?**  You'll need to have a [compatible 
browser](https://jitsi.github.io/handbook/docs/user-guide/supported-browsers) to connect to the meeting.  Alternatively you can install jitsi-meet with flatpak.

**Wait, it's not Saturday?** Timezones are weird, right?
**OK, so what do I do?** Join and [wear your Beerconf 
T-Shirt](https://www.zazzle.com/store/dlang_swag?rf=238129799288374326).


See you all there!


Re: Beta 2.099.0

2022-02-17 Thread Iain Buclaw via Digitalmars-d-announce

On Wednesday, 16 February 2022 at 09:05:39 UTC, Basile B. wrote:

On Tuesday, 15 February 2022 at 16:12:25 UTC, Iain Buclaw wrote:
Maybe an issue could be raised against the 
[dlang-bot](https://github.com/dlang/dlang-bot) to request 
better handling of ambiguous commit messages?


Yes but in the meantime I find strange that you have just 
approved a PR that will have the same effect [with issue 2].


[with issue 2]: https://github.com/dlang/dmd/pull/13663


I probably reviewed it on my phone - the github app is very good 
at hiding lots of information I would have otherwise spotted on 
desktop. :-)


Re: Beta 2.099.0

2022-02-15 Thread Iain Buclaw via Digitalmars-d-announce

On Tuesday, 15 February 2022 at 13:27:18 UTC, Basile B. wrote:
On Tuesday, 15 February 2022 at 13:06:47 UTC, Martin Nowak 
wrote:
Glad to announce the first beta for the 2.099.0 release, ♥ to 
the 99 contributors.


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

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

-Martin


Issue 3 is wrongly [referenced]. I will not create a bugzilla 
entry because I think this is not fixable


[referenced]: 
https://dlang.org/changelog/2.099.0.html#bugfix-list


Maybe an issue could be raised against the 
[dlang-bot](https://github.com/dlang/dlang-bot) to request better 
handling of ambiguous commit messages?


Re: gdc or ldc for faster programs?

2022-01-28 Thread Iain Buclaw via Digitalmars-d-learn
On Thursday, 27 January 2022 at 20:28:40 UTC, Siarhei Siamashka 
wrote:
On Thursday, 27 January 2022 at 18:12:18 UTC, Johan Engelen 
wrote:
But the language requires ODR, so we can emit templates as 
weak_odr, telling the optimizer and linker that the symbols 
should be merged _and_ that ODR can be assumed to hold (i.e. 
inlining is OK).


Thanks! This was also my impression. But the problem is that 
Iain Buclaw seems to disagree with us. He claims that template 
functions must be overridable by global functions and this is 
supposed to inhibit template functions inlining. Is there any 
independent source to back up your or Iain's claim?




For example, druntime depends on this behaviour.

Template: 
https://github.com/dlang/druntime/blob/a0ad8c42c15942faeeafb016e81a360113ae1b6b/src/rt/config.d#L46-L58


Regular symbol: 
https://github.com/dlang/druntime/blob/a17bb23b418405e1ce8e4a317651039758013f39/test/config/src/test19433.d#L1


If we can rely on instantiated symbols to not violate ODR, then 
you would be able to put symbols in the .link-once section.  
However all duplicates must also be in the .link-once section, 
else you'll get duplicate definition errors.


Re: gdc or ldc for faster programs?

2022-01-26 Thread Iain Buclaw via Digitalmars-d-learn
On Wednesday, 26 January 2022 at 18:39:07 UTC, Siarhei Siamashka 
wrote:


It's not DMD doing a good job here, but GDC11 shooting itself 
in the foot by requiring additional  esoteric command line 
options if you really want to produce optimized binaries.


The D language shot itself in the foot by requiring templates to 
have weak semantics.


If DMD and LDC inline weak functions, that's their bug.


Re: gdc or ldc for faster programs?

2022-01-26 Thread Iain Buclaw via Digitalmars-d-learn

On Wednesday, 26 January 2022 at 11:43:39 UTC, forkit wrote:
On Wednesday, 26 January 2022 at 11:25:47 UTC, Iain Buclaw 
wrote:


Whenever I've watched talks/demos where benchmarks were the 
central topic, GDC has always blown LDC out the water when it 
comes to matters of math.

..


https://dlang.org/blog/2020/05/14/lomutos-comeback/


Andrei forgot to do a follow up where one weird trick makes the 
gdc compiled lumutos same speed as C++ (and faster than ldc).


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96429


Re: gdc or ldc for faster programs?

2022-01-26 Thread Iain Buclaw via Digitalmars-d-learn

On Wednesday, 26 January 2022 at 04:28:25 UTC, Ali Çehreli wrote:

On 1/25/22 16:15, Johan wrote:
> On Tuesday, 25 January 2022 at 19:52:17 UTC, Ali Çehreli
wrote:
>>
>> I am using compilers installed by Manjaro Linux's package
system:
>>
>> ldc: LDC - the LLVM D compiler (1.28.0):
>>   based on DMD v2.098.0 and LLVM 13.0.0
>>
>> gdc: dc (GCC) 11.1.0
>>
>> dmd: DMD64 D Compiler v2.098.1
>
> What phobos version is gdc using?

Oh! Good question. Unfortunately, I don't think Phobos modules 
contain that information. The following line outputs 2076L:


pragma(msg, __VERSION__);

So, I guess I've been comparing apples to oranges but in this 
case an older gdc is doing pretty well.




Doubt it.  Functions such as to(), map(), etc. have pretty much 
remained unchanged for the last 6-7 years.


Whenever I've watched talks/demos where benchmarks were the 
central topic, GDC has always blown LDC out the water when it 
comes to matters of math.


Even in more recent examples where I've been pushing for native 
complex to be replaced with std.complex, LDC was found to be 
slower with std.complex, but GDC was either equal, or faster than 
native (and GDC std.complex was faster than LDC).


Re: GDC has just landed v2.098.0-beta.1 into GCC

2021-12-03 Thread Iain Buclaw via Digitalmars-d-announce

On Tuesday, 30 November 2021 at 19:37:34 UTC, Iain Buclaw wrote:

Hi,

The latest version of the D language has [now 
landed](https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=5fee5ec362f7a243f459e6378fd49dfc89dc9fb5) in GCC.




I've spoken with the folks at compiler explorer and they've fixed 
up their build scripts to that this is now live to play around 
with @ https://d.godbolt.org/


Regards,
Iain.



Re: GDC has just landed v2.098.0-beta.1 into GCC

2021-12-03 Thread Iain Buclaw via Digitalmars-d-announce
On Friday, 3 December 2021 at 13:48:48 UTC, Patrick Schluter 
wrote:

On Tuesday, 30 November 2021 at 19:37:34 UTC, Iain Buclaw wrote:

Hi, just a little question that annoys me in my project which 
is mainly written in C and clashes with the D code I'm 
integrating slowly into it.
I generate the makefile dependencies with the -MMD option of 
gcc and that option generates .d files (which are not D 
language files), this is annoying as I had to rename my D files 
with a .D extension.
Is there a way to force gcc to use another extension? Is this 
extension clash been solved somehow, as the man of gcc 10.2 
lists .d as the extension for Dlang files.


Yes, with -MF to specify the output dependency file.


Re: GDC has just landed v2.098.0-beta.1 into GCC

2021-12-02 Thread Iain Buclaw via Digitalmars-d-announce

On Thursday, 2 December 2021 at 11:44:33 UTC, Per Nordlöw wrote:

On Tuesday, 30 November 2021 at 19:37:34 UTC, Iain Buclaw wrote:
The latest version of the D language has [now 
landed](https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=5fee5ec362f7a243f459e6378fd49dfc89dc9fb5) in GCC.


To try this out do I build gcc with only the D language 
frontend enabled?


Yes, if you want it to build fast, you can use 
`--disable-bootstrap`.


GDC has just landed v2.098.0-beta.1 into GCC

2021-11-30 Thread Iain Buclaw via Digitalmars-d-announce

Hi,

The latest version of the D language has [now 
landed](https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=5fee5ec362f7a243f459e6378fd49dfc89dc9fb5) in GCC.


As the D front-end for GDC is now itself written in D, in order 
to build GDC, you will need a working GDC compiler (GCC version 
9.1 or later).


Of the tested ports that work for bootstrapping the new 
front-end, x86_64-linux-gnu is the most battle tested.  Others 
that have been checked and verified to work include:

- mips-linux-gnu
- powerpc64le-linux-gnu
- sparcv9-sun-solaris
- x86_64-portbld-freebsd12
- amd64-openbsd6.9
- x86_64-netbsd
- x86_64-apple-darwin20.

**Why specifically v2.098.0-beta.1?**  No real reason, other than 
it was just the last time that I had synchronized my [development 
branch](https://github.com/D-Programming-GDC/gcc/tree/ibuclaw/gdc) with upstream dmd.


You can expect this to be bumped again to the latest commit made 
to [dmd master](https://github.com/dlang/dmd/commits/master) in 
the coming week, and for GDC to closely follow DMD development 
until around end of March when we'll switch over to whatever will 
be the upcoming DMD version just before the GCC-12 release freeze.


---
```
$ git show --oneline --stat
 5fee5ec362f d: Import dmd b8384668f, druntime e6caaab9, phobos 
5ab9ad256 (v2.098.0-beta.1)

 ...
 2803 files changed, 338878 insertions(+), 193928 deletions(-)
```
---

**What's left in the pipeline?**  For the next six months until 
May, its just the usual, too many things to do, too little time 
to do them.  I haven't forgotten about other improvements that I 
started looking into at the beginning of this development cycle:
- Hosting release binaries on the gdc project site (or github, or 
both)

- Updating the compilers on the explorer site to version 11
- Add more targets to the gdc build infrastructure.

If you think you could contribute in any way, please don't 
hesitate to jump on the 
[#gdc](https://dlang.slack.com/archives/C6LTP6MV1) channel on the 
Dlang Slack or [#d.gdc](irc://irc.libera.chat/d.gdc) on 
Libera.Chat IRC and ask about it.


See you around at the next release or update.

Regards,
Iain.

# If you are interested in helping support ongoing 
development or infrastructure costs for CI and platform testing, 
you can do so by making a donation to the [D Language 
Foundation](https://dlang.org/foundation/donate.html), 
approximations of costs into USD are up on my [Github Sponsor 
page](https://github.com/sponsors/ibuclaw/).


Re: Debugging D code with GDB

2021-11-30 Thread Iain Buclaw via Digitalmars-d-learn

On Monday, 29 November 2021 at 14:48:21 UTC, Luís Ferreira wrote:
On Sun, 2021-11-28 at 21:59 +, Iain Buclaw via 
Digitalmars-d-learn wrote:


DMD doesn't emit this information. GDB can't work miracles 
when the compiler isn't pulling its own weight.


I confirm this is an issue with DMD. I filed a bug in the issue 
tracker, in case you want to follow: 
https://issues.dlang.org/show_bug.cgi?id=22551


Anyway, DMD exports the symbol, it should work if you do 
something like `myPrint()`, but I think there is another 
problem on calling it, due to defective calling convention on 
both DMD and LDC implementations.


LDC exports the symbol correctly, although.


Indeed, gdb assumes calling convention is same as default for 
target (actually its been years since I last looked, but are 
calling conventions tags in dwarf? Does gdb know about functions 
with thiscall or regparm attributes?)


Another thing on the gdb side, it is currently missing D language 
support for overloads, so that the correct function would be 
picked when you call e.g std.math.sin(1f).


Re: Debugging D code with GDB

2021-11-28 Thread Iain Buclaw via Digitalmars-d-learn
On Saturday, 27 November 2021 at 14:17:11 UTC, Eduard Staniloiu 
wrote:

Hello,

I'm trying to use `gdb` to debug D binaries, but I'm having 
trouble accessing the methods of a struct or class. It seems 
that `gdb` doesn't see them.


Given the following simple example
```
// test.d
struct S
{
int x;

void myPrint() { writefln("x is %s\n", x); }
}

void main(string[] args)
{
S s;
}
```
Compile the source file with debug simbols (`dmd -g test.d 
-of=test`) and open the binary with gdb (`gdb test`) and run 
the following


```

break _Dmain # break at D entry point
run
ptype s

type = struct test.S {
int x;
}

print s.myPrint()

Structure has no component named myPrint.
```

As you can see, when I try to access the `myPrint()` method I 
get the error

"Structure has no component named myPrint."



DMD doesn't emit this information. GDB can't work miracles when 
the compiler isn't pulling its own weight.




Re: Beerconf October 2021

2021-10-30 Thread Iain Buclaw via Digitalmars-d-announce
On Saturday, 30 October 2021 at 12:11:45 UTC, Brian Callahan 
wrote:

On Saturday, 30 October 2021 at 08:00:49 UTC, Iain Buclaw wrote:

**What is Beefconf?**


(The beefconf typo is back this month )


One of these days I'll learn to type, until then I'll just keep 
on blaming my semi-broken laptop keyboard. ;-)


Re: Beerconf October 2021

2021-10-30 Thread Iain Buclaw via Digitalmars-d-announce
On Monday, 18 October 2021 at 13:44:05 UTC, Steven Schveighoffer 
wrote:

# BEERCONF!

See you in 2 weeks! 


Hi all,

Beerconf is inviting you to a meeting.

Join the meeting: https://meet.jit.si/Dlang2021OctoberBeerConf
Password: `--DRT-gcopt=fork:1`

**What is Beefconf?** [Follow this 
link](https://wiki.dlang.org/Beerconf).


**How do I join?** You'll need to have a [compatible 
browser](https://jitsi.github.io/handbook/docs/user-guide/supported-browsers) to connect to the meeting.  Alternatively you can install jitsi-meet with [flatpak](https://flathub.org/apps/details/org.jitsi.jitsi-meet).


**Wait, it's not Saturday?** Timezones are weird, right?

**OK, so what do I do?** Join and [wear your Beerconf 
T-Shirt](https://www.zazzle.com/store/dlang_swag?rf=238129799288374326).


See you all there!


Re: Beerconf October 2021

2021-10-29 Thread Iain Buclaw via Digitalmars-d-announce
On Friday, 29 October 2021 at 02:54:13 UTC, Steven Schveighoffer 
wrote:

On 10/18/21 9:44 AM, Steven Schveighoffer wrote:

# BEERCONF!

Just one month to go before the next [dconf 
online](http://dconf.org/2021/online/index.html), I hope 
everyone is excited! In the meantime, we will once again get 
together online to discuss all things D, and sample some tasty 
beverages.


This month, it falls on October 30-31. If you need a costume 
for Sunday, I suggest a nice 
[T-shirt](https://www.zazzle.com/store/dlang_swag/products?cg=196874696466206954).


Just a ping to everyone, this is happening in 2 days!

See you then 



You missed a trick and forgot to call it Octoberfest. ;-)


Re: Beerconf September 2021

2021-09-26 Thread Iain Buclaw via Digitalmars-d-announce

On Sunday, 26 September 2021 at 18:05:08 UTC, Brian wrote:
On Saturday, 25 September 2021 at 07:14:58 UTC, Iain Buclaw 
wrote:


**What is Beefconf?**


What is Beefconf, indeed. Are we getting an additional online 
meetup this month? :)




We'll also be starting up Beetconf as well. :-)


Re: Beerconf September 2021

2021-09-25 Thread Iain Buclaw via Digitalmars-d-announce
On Saturday, 11 September 2021 at 16:51:20 UTC, Steven 
Schveighoffer wrote:

# BEERCONF!



Hi all,

Beerconf is inviting you to a meeting.

Join the meeting: https://meet.jit.si/Dlang2021SeptemberBeerConf
Password: `-preview=dtorfields`

**What is Beefconf?** [Follow this 
link](https://wiki.dlang.org/Beerconf).


**How do I join?** You'll need to have a [compatible 
browser](https://jitsi.github.io/handbook/docs/user-guide/supported-browsers) to connect to the meeting.  Alternatively you can install jitsi-meet with [flatpak](https://flathub.org/apps/details/org.jitsi.jitsi-meet).


**Wait, it's not Saturday?** Timezones are weird, right?

**OK, so what do I do?** Join and [wear your Beerconf 
T-Shirt](https://www.zazzle.com/store/dlang_swag?rf=238129799288374326).


See you all there!





Re: Beerconf August 2021

2021-08-28 Thread Iain Buclaw via Digitalmars-d-announce

# BEERCONF!

Hi all,

Beerconf is inviting you to a meeting.

Join the meeting: https://meet.jit.si/Dlang2021AugustBeerConf
Password: `gcopt=fork:1`

**What is Beefconf?** [Follow this 
link](https://wiki.dlang.org/Beerconf).


**Wait, it's not Saturday?** Timezones are weird, right?

**OK, so what do I do?** Join and [wear your Beerconf 
T-Shirt](https://www.zazzle.com/store/dlang_swag?rf=238129799288374326).


See you all there!


GCC 11.2 Released

2021-07-29 Thread Iain Buclaw via Digitalmars-d-announce

Hi,

GCC version 11.2 was released on the 28th.

GCC 11.2 is a bug-fix release from the GCC 11 branch containing 
important fixes for regressions and serious bugs in GCC 11.1.


In the D language front-end and standard library, there have been 
two ICE bug fixes, and and two code generation fixes in GDC 
itself.


Other regression/bugs fixes were cherry-picked from upstream DMD 
for bugzilla issues 12504, 17857, 19234, 21742, 21898, 21927, 
21939, 22005, 22006, and 22007.


As usual, sources are available from any of the [GCC 
mirrors](https://gcc.gnu.org/mirrors.html), or you can clone the 
[git repository](git://gcc.gnu.org/git/gcc.git).  Wait long 
enough, and it should be appearing in a Linux distribution near 
you.


Regards
Iain.


Re: Beerconf July 2021

2021-07-23 Thread Iain Buclaw via Digitalmars-d-announce
On Sunday, 11 July 2021 at 14:01:43 UTC, Steven Schveighoffer 
wrote:

# BEERCONF!



Hi all,

Beerconf is inviting you to a meeting.

Join the meeting: https://meet.jit.si/Dlang2021JulyBeerConf
Password: `import("stdlib.h");`

**What is Beefconf?** [Follow this 
link](https://wiki.dlang.org/Beerconf).


**Wait, it's not Saturday?** [It is in 
Auckland](https://www.timeanddate.com/worldclock/fullscreen.html?n=22).


**OK, so what do I do?** Join and [get yourself a Beerconf 
T-Shirt](https://www.zazzle.com/store/dlang_swag?rf=238129799288374326).


See you all there!


Re: Release D 2.097.1

2021-07-20 Thread Iain Buclaw via Digitalmars-d-announce

On Tuesday, 20 July 2021 at 10:21:48 UTC, Martin Nowak wrote:

Glad to announce D 2.097.1, ♥ to the 9 contributors.

http://dlang.org/download.html

This point release fixes a few issues over 2.097.0, see the 
changelog for more details.


http://dlang.org/changelog/2.097.1.html

-Martin


I hope you're ready for a 2.097.2 release in a day or two. :-)


Re: Beerconf July 2021

2021-07-16 Thread Iain Buclaw via Digitalmars-d-announce
On Sunday, 11 July 2021 at 14:01:43 UTC, Steven Schveighoffer 
wrote:

# BEERCONF!

In 2 weeks we will have the 14th 
[mensual](https://www.merriam-webster.com/dictionary/mensual) 
online Beerconf on July 24-25!




Just a forewarning, it was brought to my attention last month 
that for some people, Beerconf would fall on the Sunday/Monday 
25-26th for them.  Why?  If you're living in Apia, Saturday 24th 
July would begin on Friday 23rd at 13:00 CEST, while in 
neighbouring Alofi, Sunday 25th ends on Monday 26th at 13:00 CEST.


So this month as an experiment I'll be starting the Jitsi meeting 
at a time that suits people living on the edge of the positive 
side of UTC (mostly Auckland and East-coast Australia).  If you 
are living in Europe or America, this would be Friday afternoon 
or evening for you.


Depending on how it goes, either we'll see more of a spread out 
meet-up, or start being more centric around UTC.  See you all 
next week!


Re: Beerconf June 2021

2021-06-26 Thread Iain Buclaw via Digitalmars-d-announce
On Saturday, 12 June 2021 at 14:58:36 UTC, Steven Schveighoffer 
wrote:

# BEERCONF

Hi everyone!



Beerconf is inviting you to a meeting.

Join the meeting: https://meet.jit.si/Dlang2021JuneBeerConf

Password: `while (auto x = expression)`

See you all there!


Re: GCC 11.1 Released

2021-06-09 Thread Iain Buclaw via Digitalmars-d-announce

On Wednesday, 9 June 2021 at 07:15:40 UTC, Elronnd wrote:

On Thursday, 27 May 2021 at 01:04:37 UTC, Iain Buclaw wrote:
2. The promise of dynamically generating D bindings from C 
headers never really materialized.  Actual work of adding a 
GCC compiler switch to dump D code was [completed to around 
95% of what was 
needed](https://github.com/D-Programming-GDC/gcc/compare/1cb2d1d5ce178cb68f0bd475299d2e0b25a4a756...ibuclaw/dumpspec), but then stalled on the just how this feature would integrate this into druntime.


Could this also support c++?  If so, that seems like it could 
potentially be a reason to continue development on it 
preferentially to importC.  Calypso-ish :)


Because it works on the debug info/generic tree level, all 
languages GCC supports can be used to emit D bindings for their 
code.


Re: From the D Blog: Driving with D

2021-06-08 Thread Iain Buclaw via Digitalmars-d-announce

On Tuesday, 8 June 2021 at 09:08:20 UTC, Max Samukha wrote:

On Monday, 7 June 2021 at 10:38:08 UTC, Max Samukha wrote:



Would be great if you did. Not a blocker, though.


However, this is a major pain:

```d
struct FP {
}

alias parse = () {
FP[] parts;
parts ~= FP();
return parts;
};

immutable s = parse();

extern(C) int main() {
return 0;
}
```

avr-gdc -fno-druntime ctfe.d
ctfe.d:3:1: error: 'object.TypeInfo' cannot be used with 
'-fno-rtti'

3 | struct FP {
  | ^
ctfe.d:3:1: error: 'object.TypeInfo' could not be found, but is 
implicitly used

3 | struct FP {
  | ^
d21: internal compiler error: Segmentation fault
0x178ae29 internal_error(char const*, ...)


Thanks, that seems to be [this 
issue](https://issues.dlang.org/show_bug.cgi?id=19234).


Testing backports of both now 
([here](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100935) and 
[here](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100964)).


Re: From the D Blog: Driving with D

2021-06-06 Thread Iain Buclaw via Digitalmars-d-announce

On Sunday, 6 June 2021 at 20:11:04 UTC, Max Samukha wrote:

On Sunday, 6 June 2021 at 18:57:06 UTC, Max Samukha wrote:


2) 'align' is mishandled


GCC's bugzilla won't let me register.



You'd have to use a non-gmail account IIRC, not sure if there's 
any others that are in the "typically spam" blacklist.



align(4)
struct S {
ubyte[4] bytes;
}

static assert (S.alignof == 4); // fail, S.alignof == 1

It's not specific to AVR. Worked around by placing 'align' 
inside the struct.


That sounds a lot like this issue: 
https://issues.dlang.org/show_bug.cgi?id=17857


Can backport that for GCC-11.


Re: From the D Blog: Driving with D

2021-06-04 Thread Iain Buclaw via Digitalmars-d-announce

On Friday, 4 June 2021 at 21:28:00 UTC, Max Samukha wrote:

On Friday, 4 June 2021 at 15:48:50 UTC, rikki cattermole wrote:

Does this form of foreach work?

foreach(i; 0 .. 10)


That does work.

This doesn't:

ubyte[] slice;
foreach (ubyte i; slice) {
}

Invalid bitcast
  %17 = bitcast i16 %15 to i32

I guess the cause is the same - slice.length.sizeof == 4, while 
slice.sizeof == 4, slice.ptr.sizeof == 2, and size_t.sizeof == 
2.


You should have better luck using gdc on avr.

https://explore.dgnu.org/z/bos5ee


Re: LWDR (Light Weight D Runtime) for Microcontrollers v0.2.3

2021-05-31 Thread Iain Buclaw via Digitalmars-d-announce

On Monday, 31 May 2021 at 01:05:03 UTC, Dylan Graham wrote:

On Sunday, 30 May 2021 at 17:31:37 UTC, Dukc wrote:

On Sunday, 30 May 2021 at 14:28:25 UTC, Dylan Graham wrote:


It works by providing a series of barebones API hooks (alloc, 
dealloc, assert, etc) (defined in `rtoslink.d`), which you 
must implement and/or point to your RTOS implementation.


Quickly looking, the implementation looks very portable, save 
for exceptions. with `rtoslink.d`, this will probably enable a 
lot of stuff on any platform without DRuntime. Not just 
microcontrollers. If I'm right, you just did a BIG service for 
D on bare-metal.




Exceptions are a nightmare. It works for GDC with GCC code. My 
codebase uses GCC for its C (ST toolchain), so I need to write 
some code that can take LDC's exception handling and make it 
compatible with how GCC operates. So, it looks like there will 
be multiple exception handling implementations (LDC with GCC 
backend, LDC with clang backend, GDC with GCC backend). I wish 
D had something like Zig's error handling.


Otherwise, thank you! It was designed to be agnostic as much as 
possible. I didn't know it'd help out for more than just 
microcontrollers :)


Good to see this work come to fruition.  First thing I stumbled 
across was a 
[mispelling](https://github.com/0dyl/LWDR/blob/eb5de110ba2cff4bd0e654e8a68b59fc5eb76157/source/rtoslink.d#L14) of one of the RTOS hooks.


Regarding exceptions, apart from one small detail I'd have 
thought that GDC and LDC would be compatible, as both just use 
libunwind.  Said small detail are the name of the entry-points 
for the "throw" and "personality" routines.  Both of which can be 
sorted out trivially with some stubs to forward from one to the 
other.


```
extern(C) void _d_throw(Throwable o) { return _d_throw_common(o); 
}
extern(C) void _d_throw_exception(Throwable o) { return 
_d_throw_common(o); }


extern(C) void _d_throw_common(Throwable o)
{
   pragma(inline, false);
   // Implementation here: tail merging should take care of the 
entrypoints.

}
```


Re: BeerConf May 2021

2021-05-29 Thread Iain Buclaw via Digitalmars-d-announce
On Thursday, 27 May 2021 at 14:34:03 UTC, Steven Schveighoffer 
wrote:

A reminder that this is 2 days away. See you then! 

-Steve


Beerconf is inviting you to a meeting.

Join the meeting: https://meet.jit.si/Dlang2021MayBeerConf
Password: `__traits(toType)`

See you all there!


Dlang IRC has moved to Libera Chat

2021-05-29 Thread Iain Buclaw via Digitalmars-d-announce

Hi all,

For over 18 years, we have used Freenode as our home for the 
Dlang community on IRC.  Recent events, however, have made it 
unclear whether we will be able to retain any presence on 
Freenode at all.


So it has been decided, as of 
[2021/05/27](https://github.com/dlang/dlang.org/pull/3012), our 
official IRC presence will now be on [Libera 
Chat](https://libera.chat/), with [OFTC](https://www.oftc.net/) 
as a secondary home.  The Freenode channel has now been marked as 
unofficial, and we invite everyone to join us in #d on Libera 
Chat.


With that said, I am happy to announce that the Dlang project has 
been registered with Libera Chat. This grants us claim to the #d 
and #dlang related channels, as well as setting up dlang cloaks.  
If you are a contributor to any project under the umbrella of 
dlang (including gdc and ldc), and would like to request a cloak, 
then please reach out to us.


The new channels on libera are:
- `#d`: Dlang community channel
- `#d-feed`: DFeed bot postings of all dlang-related posts, 
issues, and pull requests

- `#d-gdc`: GDC development channel
- `#dlang`: Dlang development channel

See you all there!

---
**THIS IS NOT A DISCUSSION THREAD**

Please discuss the announcement in the [general forum 
thread](https://forum.dlang.org/post/ecmxtpulswayuzjrg...@forum.dlang.org).


Re: GCC 11.1 Released

2021-05-27 Thread Iain Buclaw via Digitalmars-d-announce

On Thursday, 27 May 2021 at 14:14:40 UTC, WebFreak001 wrote:

On Thursday, 27 May 2021 at 01:04:37 UTC, Iain Buclaw wrote:

...

my [Github Sponsor page](https://github.com/sponsors/ibuclaw/).

...


TIL, sponsored!


Well, I am speechless.  I've had a few surprises in my inbox this 
morning in relation to that link.


GCC 11.1 Released

2021-05-26 Thread Iain Buclaw via Digitalmars-d-announce

Hi,

This year it's taken even longer than usual to get round to 
posting the formal announcement, but here it now is, and there 
has been a lot to sift through.


As of last month (27th April), [GCC 11.1 has now been 
released](https://gcc.gnu.org/gcc-11/changes.html#d).


For the D language front-end, there have been a significant 
number of changes, so it's probably best to start with the 
lowlights as they are comparatively small.


---

Lowlights
-

1. Contrary to the hopes of last years release announcement, this 
version still uses [D 
2.076.1](https://dlang.org/changelog/2.076.1.html) as the 
baseline for D language support.  Some significant blocking 
issues in upstream DMD meant that I could not commit to switching 
to self-hosted with full confidence, and said issues did not get 
resolved until after the feature window closed.


2. The promise of dynamically generating D bindings from C 
headers never really materialized.  Actual work of adding a GCC 
compiler switch to dump D code was [completed to around 95% of 
what was 
needed](https://github.com/D-Programming-GDC/gcc/compare/1cb2d1d5ce178cb68f0bd475299d2e0b25a4a756...ibuclaw/dumpspec), but then stalled on the just how this feature would integrate this into druntime.


   Then there's been the announcement of importC, which seems 
like a good reason to change tack and instead put effort into 
getting importC to the state where it is fit for purpose.


   Perhaps this utility could be released anyway, as an 
alternative to the likes of DStep, except leverages gcc to parse 
the sources instead via `gcc file.c -fdump-d-spec=file.d`


3. Whilst [my little project site](https://gdcproject.org) did 
recent a styling revamp, very little was done in the way of 
documentation.  Though soon I hope to get changelog entries 
published there at least.


4. The [compiler explorer site](https://explore.dgnu.org) has 
also been updated, though the running compilers were left at 
version GCC 9.1.


---

Highlights
--

1. Instead of updating language version, efforts have been driven 
towards increasing cross-platform support, there have been a 
number of new additions:

   - FreeBSD
   - DragonFlyBSD
   - OpenBSD
   - OS X
   - MinGW

   OpenBSD, OS X and MinGW do not enable Phobos by default, and 
are to be considered experimental at this time, you can override 
the building of Phobos with the `--enable-libphobos` configure 
switch.  OS X has been the most tested of the experimental 
configurations, and is working generally well on all versions 
between Darwin 10 and 19.


2. Testing infrastructure has been expanded, and it is no longer 
Ubuntu-centric.  There are now the following new platforms under 
test:

   - [CirrusCI](https://cirrus-ci.com/build/6373685910044672)
 - x86_64-linux-gnu
 - x86_64-portbld-freebsd12.2
 - x86_64-apple-darwin19
   - 
[Buildkite](https://buildkite.com/d-programming-gdc/gcc/builds/285)

 - x86_64-alpine-linux-musl
 - x86_64-unknown-netbsd
 - amd64-unknown-openbsd6.9

   For everything else under Buildkite, the two pre-existing 
agents have had a CPU upgrade, and a third agent has been added 
into the infrastructure that has reduced overall build times by 
more than half.  The servers I'm using for buildkite are 
ridiculously cheap, however if you are interested in helping 
support the monthly costs, you can do so by making a donation to 
the [D Language 
Foundation](https://dlang.org/foundation/donate.html), 
approximations of costs into USD are up on my [Github Sponsor 
page](https://github.com/sponsors/ibuclaw/).


---

**New features**:
  - A new bottom type `typeof(*null)` has been added to represent 
run-time errors and non-terminating functions. This also 
introduces a new standard alias for the type named `noreturn`, 
and is implicitly imported into every module.


  - [Printf-like and 
scanf-like](https://dlang.org/changelog/2.092.0.html#printfParams2) functions are now detected by prefixing them with pragma(printf) for printf-like functions or pragma(scanf) for scanf-like functions.


  - The __traits() expression now supports the extensions 
`isDeprecated`, `isDisabled`, `isFuture`, `isModule`, 
`isPackage`, `child`, `isReturnOnStack`, `isZeroInit`, 
`getTargetInfo`, `getLocation`, `hasPostblit`, `isCopyable`, 
`getVisibility`, and `totype`.


  - [An expression-based contract 
syntax](https://dlang.org/changelog/2.081.0.html#expression-based_contract_syntax) has been added to the language.


  - [Function literals can now 
return](https://dlang.org/changelog/2.086.0.html#funcliteralsbyref) a value by reference with the `ref` keyword.


  - [A new syntax is 
available](https://dlang.org/changelog/2.087.0.html#aliasdecly_func) to declare aliases to function types using the `alias` syntax based on the assignment operator.


  - [New 
types](https://dlang.org/changelog/2.096.0.html#complex_types) 
`__c_complex_float`, `__c_complex_double`, `__c_complex_real`, 
and `__c_wchar_t` 

  1   2   3   4   5   6   7   8   9   10   >