Hi;
I have copied D source code from Rosetta Code as a test on my MacOS M1 machine.
https://rosettacode.org/wiki/Power_set#D (second version)
cat -n ./power_set.d
1 // An alternative version, which implements the range construct from
2 // scratch:
3
4 import std.range;
5
6 struct PowerSet(R)
7 if (isRandomAccessRange!R) {
8 R r;
9 size_t position;
10
11 struct PowerSetItem {
12 R r;
13 size_t position;
14
15 private void advance() {
16 while (!(position & 1)) {
17 r.popFront();
18 position >>= 1;
19 }
20 }
21
22 @property bool empty() { return position == 0; }
23 @property auto front()
24 {
25 advance();
26 return r.front;
27 }
28 void popFront()
29 {
30 advance();
31 r.popFront();
32 position >>= 1;
33 }
34 }
35
36 @property bool empty() { return position == (1 \<\< r.length); }
37 @property PowerSetItem front() { return PowerSetItem(r.save, position); }
38 void popFront() { position++; }
39 }
40
41 auto powerSet(R)(R r) { return PowerSet!R(r); }
/opt/dlang/ldc2-e20e2064-osx-arm64/bin/ldc2 -v ./power_set.d
binary /opt/dlang/ldc2-e20e2064-osx-arm64/bin/ldc2
version 1.41.0-git-e20e206 (DMD v2.111.0, LLVM 19.1.7)
config /opt/dlang/ldc2-e20e2064-osx-arm64/etc/ldc2.conf (arm64-apple-darwin24.5.0)
predefs LDC all D_Version2 assert D_PreConditions D_PostConditions D_Invariants D_ModuleInfo D_Exceptions D_TypeInfo AArch64 ARM_HardFloat D_HardFloat LittleEndian D_LP64 D_PIC OSX darwin Posix CppRuntime_LLVM CppRuntime_Clang LDC_LLVM_1901 D_ObjectiveC
parse power_set
importall power_set
import object (/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/object.d)
import core.attribute (/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/attribute.d)
import ldc.attributes (/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/ldc/attributes.d)
import core.internal.hash (/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/internal/hash.d)
import core.internal.traits (/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/internal/traits.d)
import core.internal.entrypoint (/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/internal/entrypoint.d)
import core.internal.array.appending (/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/internal/array/appending.d)
import core.internal.array.comparison (/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/internal/array/comparison.d)
import core.internal.array.equality (/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/internal/array/equality.d)
import core.internal.array.casting (/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/internal/array/casting.d)
import core.internal.array.concatenation (/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/internal/array/concatenation.d)
import core.internal.array.construction (/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/internal/array/construction.d)
import core.internal.array.arrayassign (/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/internal/array/arrayassign.d)
import core.internal.array.capacity (/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/internal/array/capacity.d)
import core.internal.dassert (/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/internal/dassert.d)
import core.internal.destruction (/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/internal/destruction.d)
import core.internal.moving (/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/internal/moving.d)
import core.internal.postblit (/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/internal/postblit.d)
import core.internal.switch_ (/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/internal/switch_.d)
import core.lifetime (/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/lifetime.d)
import core.internal.attributes (/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/internal/attributes.d)
import core.builtins (/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/builtins.d)
import ldc.intrinsics (/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/ldc/intrinsics.di)
import std.range (/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/std/range/package.d)
import std.typecons (/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/std/typecons.d)
import std.format.spec (/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/std/format/spec.d)
import std.traits (/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/std/traits.d)
import std.meta (/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/std/meta.d)
import std.range.primitives (/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/std/range/primitives.d)
import std.format.write (/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/std/format/write.d)
import std.format.internal.write (/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/std/format/internal/write.d)
import std.internal.attributes (/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/std/internal/attributes.d)
import std.array (/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/std/array.d)
import std.functional (/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/std/functional.d)
import std.conv (/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/std/conv.d)
import std.ascii (/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/std/ascii.d)
import std.range.interfaces (/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/std/range/interfaces.d)
semantic power_set
import std.exception (/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/std/exception.d)
semantic2 power_set
semantic3 power_set
GC stats 6M used, 6M free, 12M total
code power_set
/usr/bin/cc power_set.o -o power_set -L/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../lib -lphobos2-ldc -ldruntime-ldc -Wl,-dead_strip -lpthread -lm -lobjc -target arm64-apple-macos15
Undefined symbols for architecture arm64:
"_main", referenced from:
\<initial-undefines>
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Error: /usr/bin/cc failed with status: 1
What am I doing wrong here?
Thanks,
Ken Wolcott