How do you use D?

Andre Pany andre at s-e-a-p.de
Thu Jan 4 15:52:15 UTC 2018


On Friday, 28 July 2017 at 14:58:01 UTC, Ali wrote:
> While the Orgs using D page is very nice ... I hoping to hear 
> more personal stories ...
>
> So
>
> How do you use D?
> In work, (key projects or smaller side projects)
> in your side project, (github, links please)
> just to learn something new? (I would easily argue that 
> learning D will make you a better C++ programmer, maybe not the 
> most efficient way, but I a sure it i very effective)
>
> Did you introduce D to your work place? How? What challenges 
> did you face?
>
> What is you D setup at work, which compiler, which IDE?
>
> And any other fun facts you may want to share :)

I am working for a german software company. There are various 
programming languages used.
I created several non customer facing tools in D for the projects 
I am involved.
Also I tried to make advertisements for the D Programming 
Language by creating
internal wiki pages, recordings, video channel with screencams 
and telling everyone
about that nice programming language called D.

To be able to write customer facing software in D I have to 
integrate the D
programming language into the existing build landscape 
(Jenkins/XMake). It was possible to
integrate D but there are rough edges.

Before I start I want to say a big thank you to Sönke and 
everyone involved
in the Dub project. Without Dub, the usage of D would not be 
possible at all!

1) There is a deprecated "version" attribute in dub.json. Dub now 
forces you to
specify the application version using git tags. As the build 
landscape itself creates git tags
which aren't Semver compatible, the deprecation of the "version" 
attribute is a great pain for me.
I solved the problem by "inventing" an own way to specify a 
version (version.txt file), which is a bad solution.
https://github.com/dlang/dub/issues/1301

2) During the official build no connection to the internet is 
allowed (e.g. code.dlang.org).
For the moment I have no possibility to run an inhouse dub 
repository.
This forces me to include source code of the dub packages I want 
to use, in my applications.

The company is running a big Maven repository in which I could 
store the dub packages
as zip files and which has http access to these artefacts. I 
would like to specify in my dub.json the url address to the zip 
file stored in the maven repository.
https://github.com/dlang/dub/issues/1134

3) It is not possible to run DMD with the microsoft linker and 
libs without adapting the sc.ini.
That is a pain! In the build infrastructure I can only use the 
dmd zip archive and not
the setup routine. Also the adapation of the sc.ini I need to 
automate in a python script (XMake build plugin).
Python does not like the sc.ini... due to duplicate keys...

Just compare with LDC windows 64. You only have to extract the 
zip archive, call vcvarsall batch
file which sets the environment variables and thats it!
https://issues.dlang.org/show_bug.cgi?id=17967

4) Every open source software I want to use, needs to go through 
an open source process before I can use it in customer facing 
software. Dub has a very annoying behavior. If I want to use a 
package A and it has an optional dependency to be package B, Dub 
fails if B is not available. That leads to the issue that even I 
do not want to use B, I need to go through the open source 
process for B due to the behavior of Dub.
I had this issue with the unit test frame work D-Unit. 
Fortunatelly the developer of D-Unit was kind and removed the 
optional dependency completely!
https://github.com/dlang/dub/issues/1272

I have also to say a big thank you to Adam D. Ruppe. He has 
created a great library with very helpful functionality like 
database access, http server, terminal, ...
and he is a very helpful and kind person.

My hobby project is to create a bridge between the Embarcadero 
RAD Studion (Delphi) and D.
The idea is to use all functionality from Delphi and RAD Studio 
(GUI designer, thousands of libraries) without writing one 1 line 
Pascal but write everything in D. At the moment I have already a 
windows demo application running, but I hope I can extend it to 
MacOS/Android/IPhone...
https://github.com/andre2007/delta-core-10-2-1
The package you see on github is written by hand. At the moment I 
am writing a Pascal Parser to
have everything generated by the Pascal Source files 
(VCL/Firemonkey/Indy/...) automatically.

Kind regards
André


More information about the Digitalmars-d mailing list