D

Not to be confused with other, more obscure languages with the same name, D is a language developed by Walter Bright as an improvement in both power and simplicity over C++.

Naturally, my first attempt at writing a quine in this newly-discovered language was to translate one of my home-grown C ones into D:

import std.c.stdio;

const char[][] code = [ "import std.c.stdio;

const char[][] code = [ " \" r"", "" \" r", " \" r"", "" \" r" ];

void main() {
    foreach (char[] sec; code) {
        printf(sec is code[2] ? code[1] : sec);

        foreach (char ch; sec) {
            if (ch == '" \" r"') {
                printf(" \" r"\" \" r" \\\" \" r" r\" \" r"" \" r");
            } else {
                putchar(ch);
            }
        }
    }

    printf(code[2]);
}
" ];

void main() {
    foreach (char[] sec; code) {
        printf(sec is code[2] ? code[1] : sec);

        foreach (char ch; sec) {
            if (ch == '"') {
                printf("\" \\\" r\"");
            } else {
                putchar(ch);
            }
        }
    }

    printf(code[2]);
}

Here's another, shorter one:

char[]q="\";void main(){
 printf(q[75..83]~q[0..1]~q[83..84]~q~q[83..84]~q[0..75]);}
char[]q=\\";void main(){
 printf(q[75..83]~q[0..1]~q[83..84]~q~q[83..84]~q[0..75]);}

That one was written before writef was created (and before the compiler let you concatenate an array with a single element).  Here's a similar one using writef:

import std.stdio;
char[]q="\";void main(){
 writef(q[64..90],q[0],q[90],q,q[90],q[0..64]);}
import std.stdio;
char[]q=\\";void main(){
 writef(q[64..90],q[0],q[90],q,q[90],q[0..64]);}

A neat feature of D is its ability to include line breaks in strings without any special notation.  Unlike most quines in most languages, all these quines are designed to be used with the line breaks left in place.