/ config.ncl
config.ncl
 1  # SPDX-License-Identifier: AGPL-3.0-or-later
 2  # SPDX-FileCopyrightText: 2025 Hyperpolymath Contributors
 3  #
 4  # config.ncl - Nickel configuration for bebop-v-ffi
 5  # https://nickel-lang.org
 6  
 7  {
 8    project = {
 9      name = "bebop-v-ffi",
10      version = "0.0.1",
11      description = "FFI bindings between Bebop binary serialization and V language",
12      license = "AGPL-3.0-or-later",
13      repository = "https://github.com/hyperpolymath/bebop-v-ffi",
14    },
15  
16    build = {
17      implementation = "zig",
18      output = {
19        shared_lib = "libbebop_v_ffi.so",
20        static_lib = "libbebop_v_ffi.a",
21        header = "bebop_v_ffi.h",
22      },
23      targets = ["x86_64-linux", "aarch64-linux"],
24    },
25  
26    abi = {
27      version = 1,
28      stability = "unstable",  # will be "stable" at 1.0.0
29      header = "include/bebop_v_ffi.h",
30      types = ["BebopCtx", "VBytes", "VSensorReading"],
31      functions = [
32        "bebop_ctx_new",
33        "bebop_ctx_free",
34        "bebop_ctx_reset",
35        "bebop_decode_sensor_reading",
36        "bebop_free_sensor_reading",
37        "bebop_encode_batch_readings",
38      ],
39    },
40  
41    schemas = {
42      path = "schemas/",
43      files = ["sensors.bop"],
44      generator = "bebopc --lang c",
45    },
46  
47    implementations = {
48      zig = {
49        path = "implementations/zig/",
50        status = "stub",
51        build_cmd = "zig build",
52      },
53      rust = {
54        path = "implementations/rust/",
55        status = "help-wanted",
56        build_cmd = "cargo build --release",
57      },
58    },
59  
60    quality = {
61      required_coverage = 0,  # TODO: increase as we implement
62      run_fuzz = false,
63      require_golden_vectors = true,
64    },
65  
66    ecosystem = {
67      parent = "kaldor-iiot",
68      related = ["bunsenite"],
69      language_bindings = ["v"],
70    },
71  }