Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion conanfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ class KnuthPyNative(ConanFile):
# Single unified Knuth package; previously this used the standalone
# c-api/<ver>@kth/stable recipe, which no longer exists.
def requirements(self):
self.requires("kth/0.81.1", transitive_headers=True, transitive_libs=True)
self.requires("kth/0.82.0", transitive_headers=True, transitive_libs=True)

def generate(self):
# Stage headers and static libs from kth AND all its transitive
Expand Down
2 changes: 2 additions & 0 deletions include/kth/py-native/capsule_names.h
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ extern "C" {
#define KTH_PY_CAPSULE_VM_DEBUG_SNAPSHOT "kth.vm.debug_snapshot"
#define KTH_PY_CAPSULE_VM_DEBUG_SNAPSHOT_LIST "kth.vm.debug_snapshot_list"
#define KTH_PY_CAPSULE_VM_INTERPRETER "kth.vm.interpreter"
#define KTH_PY_CAPSULE_VM_METRICS "kth.vm.metrics"
#define KTH_PY_CAPSULE_VM_PROGRAM "kth.vm.program"
#define KTH_PY_CAPSULE_WALLET_EC_COMPRESSED_LIST "kth.wallet.ec_compressed_list"
#define KTH_PY_CAPSULE_WALLET_EC_PRIVATE "kth.wallet.ec_private"
Expand Down Expand Up @@ -111,6 +112,7 @@ void kth_py_native_chain_utxo_list_capsule_dtor(PyObject* capsule);
void kth_py_native_core_binary_capsule_dtor(PyObject* capsule);
void kth_py_native_vm_debug_snapshot_capsule_dtor(PyObject* capsule);
void kth_py_native_vm_debug_snapshot_list_capsule_dtor(PyObject* capsule);
void kth_py_native_vm_metrics_capsule_dtor(PyObject* capsule);
void kth_py_native_vm_program_capsule_dtor(PyObject* capsule);
void kth_py_native_wallet_ec_private_capsule_dtor(PyObject* capsule);
void kth_py_native_wallet_ec_public_capsule_dtor(PyObject* capsule);
Expand Down
39 changes: 39 additions & 0 deletions include/kth/py-native/vm/metrics.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
// Copyright (c) 2016-present Knuth Project developers.
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.

#ifndef KTH_PY_NATIVE_VM_METRICS_H_
#define KTH_PY_NATIVE_VM_METRICS_H_

#define PY_SSIZE_T_CLEAN
#include <Python.h>

#ifdef __cplusplus
extern "C" {
#endif

PyObject* kth_py_native_vm_metrics_copy(PyObject* self, PyObject* arg);
PyObject* kth_py_native_vm_metrics_destruct(PyObject* self, PyObject* arg);
PyObject* kth_py_native_vm_metrics_sig_checks(PyObject* self, PyObject* arg);
PyObject* kth_py_native_vm_metrics_op_cost(PyObject* self, PyObject* arg);
PyObject* kth_py_native_vm_metrics_hash_digest_iterations(PyObject* self, PyObject* arg);
PyObject* kth_py_native_vm_metrics_add_op_cost(PyObject* self, PyObject* args, PyObject* kwds);
PyObject* kth_py_native_vm_metrics_add_push_op(PyObject* self, PyObject* args, PyObject* kwds);
PyObject* kth_py_native_vm_metrics_add_hash_iterations(PyObject* self, PyObject* args, PyObject* kwds);
PyObject* kth_py_native_vm_metrics_add_sig_checks(PyObject* self, PyObject* args, PyObject* kwds);
PyObject* kth_py_native_vm_metrics_is_over_op_cost_limit(PyObject* self, PyObject* args, PyObject* kwds);
PyObject* kth_py_native_vm_metrics_is_over_op_cost_limit_simple(PyObject* self, PyObject* arg);
PyObject* kth_py_native_vm_metrics_is_over_hash_iters_limit(PyObject* self, PyObject* arg);
PyObject* kth_py_native_vm_metrics_has_valid_script_limits(PyObject* self, PyObject* arg);
PyObject* kth_py_native_vm_metrics_set_script_limits(PyObject* self, PyObject* args, PyObject* kwds);
PyObject* kth_py_native_vm_metrics_set_native_script_limits(PyObject* self, PyObject* args, PyObject* kwds);
PyObject* kth_py_native_vm_metrics_composite_op_cost_script_flags(PyObject* self, PyObject* args, PyObject* kwds);
PyObject* kth_py_native_vm_metrics_composite_op_cost_bool(PyObject* self, PyObject* args, PyObject* kwds);

extern PyMethodDef kth_py_native_vm_metrics_methods[];

#ifdef __cplusplus
} // extern "C"
#endif

#endif // KTH_PY_NATIVE_VM_METRICS_H_
28 changes: 27 additions & 1 deletion kth_native.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -1487,7 +1487,7 @@ def vm_program_construct_from_script_program(script: "Script", x: "Program") ->
def vm_program_construct_from_script_program_move(script: "Script", x: "Program", move: bool) -> Program: ...
def vm_program_copy(self: Program) -> Program: ...
def vm_program_destruct(self: Program) -> None: ...
def vm_program_get_metrics(self: Program) -> object | None: ...
def vm_program_get_metrics(self: Program) -> "Metrics" | None: ...
def vm_program_is_valid(self: Program) -> bool: ...
def vm_program_flags(self: Program) -> int: ...
def vm_program_max_script_element_size(self: Program) -> int: ...
Expand Down Expand Up @@ -1585,6 +1585,32 @@ def vm_interpreter_debug_run(snapshot: "DebugSnapshot") -> "DebugSnapshot" | Non
def vm_interpreter_debug_run_traced(start: "DebugSnapshot") -> "DebugSnapshotList" | None: ...
def vm_interpreter_debug_finalize(snapshot: "DebugSnapshot") -> int: ...

# ─── Metrics (auto-generated, do not edit) ─────────────────────────

class Metrics:
"""Opaque handle to a `kth::domain::machine::metrics`. Constructed by
`vm_metrics_construct_*` and released by
`vm_metrics_destruct`."""
...

def vm_metrics_copy(self: Metrics) -> Metrics: ...
def vm_metrics_destruct(self: Metrics) -> None: ...
def vm_metrics_sig_checks(self: Metrics) -> int: ...
def vm_metrics_op_cost(self: Metrics) -> int: ...
def vm_metrics_hash_digest_iterations(self: Metrics) -> int: ...
def vm_metrics_add_op_cost(self: Metrics, cost: int) -> None: ...
def vm_metrics_add_push_op(self: Metrics, stack_item_length: int) -> None: ...
def vm_metrics_add_hash_iterations(self: Metrics, message_length: int, is_two_round_hash: bool) -> None: ...
def vm_metrics_add_sig_checks(self: Metrics, n_checks: int) -> None: ...
def vm_metrics_is_over_op_cost_limit(self: Metrics, flags: int) -> bool: ...
def vm_metrics_is_over_op_cost_limit_simple(self: Metrics) -> bool: ...
def vm_metrics_is_over_hash_iters_limit(self: Metrics) -> bool: ...
def vm_metrics_has_valid_script_limits(self: Metrics) -> bool: ...
def vm_metrics_set_script_limits(self: Metrics, flags: int, script_sig_size: int) -> None: ...
def vm_metrics_set_native_script_limits(self: Metrics, standard: bool, script_sig_size: int) -> None: ...
def vm_metrics_composite_op_cost_script_flags(self: Metrics, flags: int) -> int: ...
def vm_metrics_composite_op_cost_bool(self: Metrics, standard: bool) -> int: ...

# ─── WalletData (auto-generated, do not edit) ─────────────────────────

class WalletData:
Expand Down
1 change: 1 addition & 0 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,7 @@ def run(self):
'src/vm/interpreter.cpp',
'src/vm/debug_snapshot.cpp',
'src/vm/debug_snapshot_list.cpp',
'src/vm/metrics.cpp',
# Hand-written async-callback bridge to safe_chain; not
# generator-driven because the shape doesn't fit ClassConfig.
'src/chain/chain.cpp',
Expand Down
2 changes: 2 additions & 0 deletions src/module.c
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@
#include <kth/py-native/vm/debug_snapshot.h>
#include <kth/py-native/vm/debug_snapshot_list.h>
#include <kth/py-native/vm/interpreter.h>
#include <kth/py-native/vm/metrics.h>
#include <kth/py-native/wallet/wallet_data.h>
// ── AUTO-GENERATED INCLUDES END ───────────────────────────────────────
// `word_list.h` is the only hand-written binding still here — every
Expand Down Expand Up @@ -935,6 +936,7 @@ PyInit_kth_native(void) {
KTH_REGISTER_METHODS(kth_py_native_vm_debug_snapshot_methods);
KTH_REGISTER_METHODS(kth_py_native_vm_debug_snapshot_list_methods);
KTH_REGISTER_METHODS(kth_py_native_vm_interpreter_methods);
KTH_REGISTER_METHODS(kth_py_native_vm_metrics_methods);
KTH_REGISTER_METHODS(kth_py_native_wallet_wallet_data_methods);

#undef KTH_REGISTER_METHODS
Expand Down
Loading
Loading