Skip to content

Instantly share code, notes, and snippets.

View PetarKirov's full-sized avatar

Petar Kirov PetarKirov

View GitHub Profile
dmd -O -w -dip25 -L/co -c -unittest -ofunittest1.obj std\stdio.d std\stdiobase.d std\string.d std\format.d std\file.d
DMD v2.067 DEBUG
dmd -O -w -dip25 -L/co -c -unittest -ofunittest2.obj std\range\package.d std\range\primitives.d std\range\interfaces.d
DMD v2.067 DEBUG
dmd -O -w -dip25 -L/co -c -unittest -ofunittest2a.obj std\array.d std\functional.d std\path.d std\outbuffer.d std\utf.d
DMD v2.067 DEBUG
dmd -O -w -dip25 -L/co -c -unittest -ofunittest3.obj std\csv.d std\math.d std\complex.d std\numeric.d std\bigint.d std\bitmanip.d std\typecons.d std\uni.d std\base64.d std\ascii.d std\demangle.d std\uri.d std\metastrings.d std\mmfile.d std\getopt.d
dmd -O -w -dip25 -L/co -c -unittest -ofunittest1.obj std\stdio.d std\stdiobase.d std\string.d std\format.d std\file.d
DMD v2.067 DEBUG
dmd -O -w -dip25 -L/co -c -unittest -ofunittest2.obj std\range\package.d std\range\primitives.d std\range\interfaces.d
DMD v2.067 DEBUG
dmd -O -w -dip25 -L/co -c -unittest -ofunittest2a.obj std\array.d std\functional.d std\path.d std\outbuffer.d std\utf.d
DMD v2.067 DEBUG
dmd -O -w -dip25 -L/co -c -unittest -ofunittest3.obj std\csv.d std\math.d std\complex.d std\numeric.d std\bigint.d std\
@PetarKirov
PetarKirov / d-parallel-git-pull.d
Last active August 29, 2015 14:25
Demonstrating cloning git repos and updating (via pull) them in parallel in D.
module main;
import core.atomic : atomicOp;
import std.algorithm : map;
import std.file : exists, isDir;
import std.format : format;
import std.parallelism : parallel;
import std.process : executeShell, Config;
import std.stdio : writeln, writefln;
import core.stdc.stdio : printf;
import std.stdio : writefln;
import gc.proxy : _gc;
import core.exception : InvalidMemoryOperationError;
class Resource
{
int id = id.min;
this(int i) { this.id = i; }
@PetarKirov
PetarKirov / build.sh
Created November 8, 2015 23:36
C++ <-> D non-virtual member function calls
# Build C++ static library:
g++ -c cpp_class.cpp -o cpp_class.o
ar rcs libcpp_class.a cpp_class.o
# Build D static library:
dmd -lib d_class.d
# Build C++ program:
g++ cpp_main.cpp cpp_class.cpp d_class.a -L/usr/lib/x86_64-linux-gnu/ -lphobos2 -o cpp_main
import std.experimental.ndslice;
string genCode(size_t n)
{
import std.algorithm.iteration : map;
import std.format : format;
import std.range : iota;
import std.typecons : tuple;
return "result = sl.structure.strides[$-1] == 1 &&
import std.experimental.ndslice;
string genCode(size_t n)
{
import std.algorithm.iteration : map;
import std.format : format;
import std.range : iota;
import std.typecons : tuple;
return "result = sl.structure.strides[$-1] == 1 &&
import std.experimental.ndslice;
string genCode(size_t n)
{
import std.algorithm.iteration : map;
import std.format : format;
import std.range : iota;
import std.typecons : tuple;
return "result = sl.structure.strides[$-1] == 1 &&
@PetarKirov
PetarKirov / gist:75e9caba6f205b566ad3cbfae6496032
Created August 19, 2016 09:00
Slice.isContiguous variants disassembly
.section .text._D25slice_structure_asm_check118__T12checkslice_1TS3std12experimental7ndslice5slice58__T5SliceVmi12TS3std5range13__T4iotaTiTiZ4iotaFiiZ6ResultZ5SliceZ12checkslice_1FNaNbNiNfKxS3std12experimental7ndslice5slice58__T5SliceVmi12TS3std5range13__T4iotaTiTiZ4iotaFiiZ6ResultZ5SliceZb,"axG",@progbits,_D25slice_structure_asm_check118__T12checkslice_1TS3std12experimental7ndslice5slice58__T5SliceVmi12TS3std5range13__T4iotaTiTiZ4iotaFiiZ6ResultZ5SliceZ12checkslice_1FNaNbNiNfKxS3std12experimental7ndslice5slice58__T5SliceVmi12TS3std5range13__T4iotaTiTiZ4iotaFiiZ6ResultZ5SliceZb,comdat
.weak _D25slice_structure_asm_check118__T12checkslice_1TS3std12experimental7ndslice5slice58__T5SliceVmi12TS3std5range13__T4iotaTiTiZ4iotaFiiZ6ResultZ5SliceZ12checkslice_1FNaNbNiNfKxS3std12experimental7ndslice5slice58__T5SliceVmi12TS3std5range13__T4iotaTiTiZ4iotaFiiZ6ResultZ5SliceZb
.align 16, 0x90
.type _D25slice_structure_asm_check118__T12checkslice_1TS3std12experimental7ndslice5slice58__T5SliceVmi12TS3std5range13__T4iotaTi
import core.stdc.stdio : printf;
extern (C) void main()
{
Base b = create!Derived;
b.foo();
}
extern (C++) class Base
{