|DLang Improves Objective-C Support|
|Written by Kay Ewbank|
|Thursday, 14 January 2021|
There's a new release of the D programming language with better Objective-C support, as well as improvements to the compiler, libraries, and tools.
D has been described as a better C and a better C++, as it was implemented after other languages showed how not to do things. In this sense it occupies a position much like Kotlin and its relationship to Java.
D is binary-compatible with C, is strongly typed with type inferences, single inheritance, interfaces, lambdas, closure and a memory manager. D struggled to achieve mainstream adoption, but then received a boost when GCC announced support for D in 2017, alongside big hitters including C,C++, Objective C, Objective C++, Fortran, Java, Ada and Go.
The announcement from the D programming team includes a new release of the D reference compiler (DMD) and a beta release of the popular LLVM-based D compiler (LDC). The developers say that while:
"C++-compatibility is a bear to get right, it keeps improving with every compiler release. This release continues that trend and also enhances Objective-C support."
DUB, the D build tool and package manager that ships with the compiler has also been improved from what the developers describe as "a good bit of love". The improved Objective-C support includes the ability to declare Objective-C protocols. This is achieved by repurposing interface in an extern(Objective-C) context. Additionally, the attributes @optional and @selector help get the job done.
C++ header generation has also been strengthened. This was already included in an experimental version. You can generate C++ header files from D source code making it possible to call D libraries from C++.
The version of C++ supported as standard has also been updated making C++11 the default standard. Until now extern(C++) code was guaranteed to link with C++98 binaries out of the box. This is no longer true, and you will a switch on the command line to maintain that behavior. The compiler will now also link with C++20 via a command line switch.
or email your comment to: email@example.com