Interfacing D with C: Strings Part One

Posted on

This post is part of an ongoing series on working with both D and C in the same project. The previous two posts looked into interfacing D and C arrays. Here, we focus on a special kind of array: strings. Readers are advised to read Arrays Part One and Arrays Part Two before continuing with … Continue reading Interfacing D with C: Strings Part One

Read more...

Interfacing D with C: Arrays and Functions (Arrays Part 2)

Posted on

This post is part of an ongoing series on working with both D and C in the same project. The previous post explored the differences in array declaration and initialization. This post takes the next step: declaring and calling C functions that take arrays as parameters. Arrays and C function declarations Using C libraries in … Continue reading Interfacing D with C: Arrays and Functions (Arrays Part 2)

Read more...

Tracing D Applications

Posted on

At one time or another during application development you need to make a decision: does your application work like it should and, if not, what is wrong with it? There are different techniques to help you decide, some of which are logging, tracing, and profiling. How are they different? One way to look at it … Continue reading Tracing D Applications

Read more...

wc in D: 712 Characters Without a Single Branch

Posted on

After reading “Beating C With 80 Lines Of Haskell: Wc”, which I found on Hacker News, I thought D could do better. So I wrote a wc in D. The Program It consists of one file and has 34 lines and 712 characters. import std.stdio : writefln, File; import std.algorithm : map, fold, splitter; import … Continue reading wc in D: 712 Characters Without a Single Branch

Read more...

Fuzzing Your D Application with LDC and AFL

Posted on

Fuzzing, or fuzz testing, is a powerful method to find hidden bugs in your application. The basic idea is to present random input to your application and monitor how it behaves. If it crashes or shows some other unusual behavior then you have found a bug. The use of true random input is not very … Continue reading Fuzzing Your D Application with LDC and AFL

Read more...

Containerize Your D Server Application

Posted on

A container consists of an application packed together with all of its required dependencies. The container is run as an isolated process on Linux or Windows. The Docker tool has made the handling of containers very popular and is now the de-facto standard for deploying containers to a cloud environment. In this blog post I … Continue reading Containerize Your D Server Application

Read more...

Writing a D Wrapper for a C Library

Posted on

In porting to D a program I created for a research project, I wrote a D wrapper of a C library in an object-oriented manner. I want to share my experience with other programmers. This article provides some D tips and tricks for writers of D wrappers around C libraries. I initially started my research … Continue reading Writing a D Wrapper for a C Library

Read more...

Interfacing D with C: Arrays Part 1

Posted on

When interacting with C APIs, it’s almost a given that arrays are going to pop up in one way or another (perhaps most often as strings, a subject of a future article in the “D and C” series). Although D arrays are implemented in a manner that is not directly compatible with C, the fundamental building blocks are the same. This makes compatibility between the two relatively painless as long as the differences are not forgotten. This article is the first of a few exploring those differences.

Read more...