| Field | Value |
|---|---|
| DIP: | (number/id -- assigned by DIP Manager) |
| Author: | Richard (Rikki) Andrew Cattermole firstname@lastname.co.nz |
| Implementation: | (links to implementation PR if any) |
| Status: | Draft |
| Field | Value |
|---|---|
| DIP: | (number/id -- assigned by DIP Manager) |
| Author: | Richard (Rikki) Andrew Cattermole firstname@lastname.co.nz |
| Implementation: | (links to implementation PR if any) |
| Status: | Draft |
| Field | Value |
|---|---|
| DIP: | (number/id -- assigned by DIP Manager) |
| Author: | Richard (Rikki) Andrew Cattermole firstname@lastname.co.nz |
| Implementation: | (links to implementation PR if any) |
| Status: | Draft |
| Field | Value |
|---|---|
| DIP: | (number/id -- assigned by DIP Manager) |
| Author: | Richard (Rikki) Andrew Cattermole firstname@lastname.co.nz |
| Implementation: | (links to implementation PR if any) |
| Status: | Draft |
The file format of the Source Archive Format file is very similar to that of object file libraries and various other schemes. It does not adhere to those other schemes due to their variances from platform to platform, all the code needed to support things that are unneeded for Source Archive Format files, and special consideration for D's needs. The format is meant to be friendly for memory-mapped file access, and does not have alignment issues.
The file extension is sar.
The file is broken up into sequential blocks, the start of each block will be padded to alignment of 16 bytes to enable aligned SIMD access to that block's contents.
In an attempt to work around other bugs or to improve behavior, it may come across as a wonderful idea to have variables be uninitialized, and to initialize them in separate stages.
The following code originates from a shared library by the author, in an attempt to work around a bug where the default initialization symbols was not crossing the shared library threshold.
| /** | |
| * Defines declarations of various attributes. | |
| * | |
| * The term 'attribute' refers to things that can apply to a larger scope than a single declaration. | |
| * Among them are: | |
| * - Alignment (`align(8)`) | |
| * - User defined attributes (`@UDA`) | |
| * - Function Attributes (`@safe`) | |
| * - Storage classes (`static`, `__gshared`) | |
| * - Mixin declarations (`mixin("int x;")`) |
| /** | |
| * Defines declarations of various attributes. | |
| * | |
| * The term 'attribute' refers to things that can apply to a larger scope than a single declaration. | |
| * Among them are: | |
| * - Alignment (`align(8)`) | |
| * - User defined attributes (`@UDA`) | |
| * - Function Attributes (`@safe`) | |
| * - Storage classes (`static`, `__gshared`) | |
| * - Mixin declarations (`mixin("int x;")`) |