From e828058e438810dbcbe857c50168c7538580f7f6 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Fri, 3 Feb 2023 16:56:06 -0600 Subject: [PATCH] cleaned up docs folder; bugfix with onyx-pkg --- build.sh | 7 +- docs/{ => ideas}/ditching_wasi.md | 0 docs/{ => ideas}/interfaces.onyx | 0 docs/{ => ideas}/link_options.md | 2 +- docs/ideas/mapped_directories.md | 2 + docs/{ => ideas}/module_thoughts | 0 docs/{ => ideas}/pluggable_modules.md | 0 docs/{shipping => ideas/shipping.md} | 9 +- docs/{ => ideas}/struct_asm_rewrite.md | 0 docs/{ => old}/builtins.md | 0 docs/{ => old}/plan | 0 docs/{ => old}/spec | 0 docs/watchout | 18 -- interpreter/include/vm.h | 2 - interpreter/src/ovm_cli_test.c | 1 - interpreter/src/vm/vm.c | 310 ------------------------- interpreter/src/wasm_cli_test.c | 2 - scripts/onyx-pkg.onyx | 35 ++- 18 files changed, 39 insertions(+), 349 deletions(-) rename docs/{ => ideas}/ditching_wasi.md (100%) rename docs/{ => ideas}/interfaces.onyx (100%) rename docs/{ => ideas}/link_options.md (99%) create mode 100644 docs/ideas/mapped_directories.md rename docs/{ => ideas}/module_thoughts (100%) rename docs/{ => ideas}/pluggable_modules.md (100%) rename docs/{shipping => ideas/shipping.md} (79%) rename docs/{ => ideas}/struct_asm_rewrite.md (100%) rename docs/{ => old}/builtins.md (100%) rename docs/{ => old}/plan (100%) rename docs/{ => old}/spec (100%) delete mode 100644 docs/watchout diff --git a/build.sh b/build.sh index 5fa26f96..04e95866 100755 --- a/build.sh +++ b/build.sh @@ -7,14 +7,15 @@ echo "Installing core libs" sudo mkdir -p "$CORE_DIR" sudo cp -r ./core/ "$CORE_DIR" -# This is a development feature to allow for quickly reinstalling core libraries -# without have to recompile the entire compiler -[ "$1" = "core" ] && exit 0 sudo cp ./bin/onyx-pkg "$BIN_DIR/onyx-pkg" sudo mkdir -p "$CORE_DIR/tools" sudo cp ./scripts/onyx-pkg.onyx "$CORE_DIR/tools" +# This is a development feature to allow for quickly reinstalling core libraries +# without have to recompile the entire compiler +[ "$1" = "core" ] && exit 0 + if [ "$RUNTIME_LIBRARY" = "ovmwasm" ]; then cd interpreter ./build.sh $1 diff --git a/docs/ditching_wasi.md b/docs/ideas/ditching_wasi.md similarity index 100% rename from docs/ditching_wasi.md rename to docs/ideas/ditching_wasi.md diff --git a/docs/interfaces.onyx b/docs/ideas/interfaces.onyx similarity index 100% rename from docs/interfaces.onyx rename to docs/ideas/interfaces.onyx diff --git a/docs/link_options.md b/docs/ideas/link_options.md similarity index 99% rename from docs/link_options.md rename to docs/ideas/link_options.md index aed784bd..45aa9d07 100644 --- a/docs/link_options.md +++ b/docs/ideas/link_options.md @@ -63,7 +63,7 @@ that the program is compiling under. If no `#link_options` is provided, these default values are used. Alternatively, there could just be a optional variable in -`package runtime.vars` that would define the link options. And if, +`package runtime.vars` that would define the link options. And if one is not specified than a definition in the standard library would define it like so diff --git a/docs/ideas/mapped_directories.md b/docs/ideas/mapped_directories.md new file mode 100644 index 00000000..f9bc94d3 --- /dev/null +++ b/docs/ideas/mapped_directories.md @@ -0,0 +1,2 @@ +Mapped Directories +================== \ No newline at end of file diff --git a/docs/module_thoughts b/docs/ideas/module_thoughts similarity index 100% rename from docs/module_thoughts rename to docs/ideas/module_thoughts diff --git a/docs/pluggable_modules.md b/docs/ideas/pluggable_modules.md similarity index 100% rename from docs/pluggable_modules.md rename to docs/ideas/pluggable_modules.md diff --git a/docs/shipping b/docs/ideas/shipping.md similarity index 79% rename from docs/shipping rename to docs/ideas/shipping.md index da6618a0..df63478a 100644 --- a/docs/shipping +++ b/docs/ideas/shipping.md @@ -1,14 +1,17 @@ This file discusses what Onyx will look like in its shipped form, on Windows, MacOS and Linux. -Windows --------------------------------------------------------- +Windows +--------------------- Things that are needed: * onyx.exe exists in the path * onyx.exe knows where the core modules are installed (%APPDATA%\Local ?) -MacOS --------------------------------------------------------- +MacOS +--------------------- I know nothing about shipping portable things on MacOS... -Linux --------------------------------------------------------- +Linux +--------------------- The way that build.sh installs Onyx on Linux is pretty close to the long term solution. That being, copying the core library to /usr/share/onyx/core and the necessary dependencies (libwasmer at the moment) to /usr/share/onyx/lib, and the executable to /usr/bin/onyx. This feels pretty intact with diff --git a/docs/struct_asm_rewrite.md b/docs/ideas/struct_asm_rewrite.md similarity index 100% rename from docs/struct_asm_rewrite.md rename to docs/ideas/struct_asm_rewrite.md diff --git a/docs/builtins.md b/docs/old/builtins.md similarity index 100% rename from docs/builtins.md rename to docs/old/builtins.md diff --git a/docs/plan b/docs/old/plan similarity index 100% rename from docs/plan rename to docs/old/plan diff --git a/docs/spec b/docs/old/spec similarity index 100% rename from docs/spec rename to docs/old/spec diff --git a/docs/watchout b/docs/watchout deleted file mode 100644 index cec05161..00000000 --- a/docs/watchout +++ /dev/null @@ -1,18 +0,0 @@ -Some tags to watch out for in the code with features that may be removed in the future: - - :ValueDirectiveHack - In the same way #type can be used to express a type expression - in a value context, #value can be used to express a value expression - in a type context, such as a #solidify directive. - - :NullProcHack - There are many times where being able to store a procedure that - is 'null' is useful, such as a vtable-like structure that doesn't - need all members defined. For this reason, `null_proc` was added. - It type matches against all procedure types without an error, allowing - it to be used wherever a procedure was expected. Also, before calling - a dynamic procedure, it should be checked against `null_proc`. - - The implementation of `null_proc` is rather simple, but feels a - little verbose an targential compared to everything else being done - in the compiler. \ No newline at end of file diff --git a/interpreter/include/vm.h b/interpreter/include/vm.h index 7e436c5f..d3664a8b 100644 --- a/interpreter/include/vm.h +++ b/interpreter/include/vm.h @@ -94,8 +94,6 @@ struct ovm_program_t { ovm_program_t *ovm_program_new(ovm_store_t *store); void ovm_program_delete(ovm_program_t *program); void ovm_program_add_instructions(ovm_program_t *program, i32 instr_count, ovm_instr_t *instrs); -void ovm_program_print_instructions(ovm_program_t *program, i32 start_instr, i32 instr_count); -void ovm_raw_print_instructions(i32 instr_count, ovm_instr_t *instrs); int ovm_program_register_static_ints(ovm_program_t *program, int len, int *data); int ovm_program_register_func(ovm_program_t *program, char *name, i32 instr, i32 param_count, i32 value_number_count); diff --git a/interpreter/src/ovm_cli_test.c b/interpreter/src/ovm_cli_test.c index 98caf1ef..57810442 100644 --- a/interpreter/src/ovm_cli_test.c +++ b/interpreter/src/ovm_cli_test.c @@ -29,7 +29,6 @@ int main(int argc, char *argv[]) { ovm_state_t *state = ovm_state_new(engine, prog); ovm_program_load_from_file(prog, engine, argv[1]); - ovm_program_print_instructions(prog, 0, bh_arr_length(prog->code)); static int func_table[] = { 0, 1, 6 }; ovm_program_register_static_ints(prog, 3, func_table); diff --git a/interpreter/src/vm/vm.c b/interpreter/src/vm/vm.c index e4464f56..500e69d8 100644 --- a/interpreter/src/vm/vm.c +++ b/interpreter/src/vm/vm.c @@ -135,312 +135,6 @@ void ovm_program_add_instructions(ovm_program_t *program, i32 instr_count, ovm_i } -static char *ovm_instr_name(i32 full_instr) { - return ""; -} - -#if 0 -static char *ovm_instr_name(i32 full_instr) { -#define C(...) \ - case __VA_ARGS__: return #__VA_ARGS__; \ - case __VA_ARGS__ | OVMI_ATOMIC: return "ATOMIC_" #__VA_ARGS__; - - static char buf[64]; - - switch (full_instr) { - C(OVMI_NOP) - - C(OVM_TYPED_INSTR(OVMI_ADD, OVM_TYPE_I8)) - C(OVM_TYPED_INSTR(OVMI_ADD, OVM_TYPE_I16)) - C(OVM_TYPED_INSTR(OVMI_ADD, OVM_TYPE_I32)) - C(OVM_TYPED_INSTR(OVMI_ADD, OVM_TYPE_I64)) - C(OVM_TYPED_INSTR(OVMI_ADD, OVM_TYPE_F32)) - C(OVM_TYPED_INSTR(OVMI_ADD, OVM_TYPE_F64)) - - C(OVM_TYPED_INSTR(OVMI_SUB, OVM_TYPE_I8)) - C(OVM_TYPED_INSTR(OVMI_SUB, OVM_TYPE_I16)) - C(OVM_TYPED_INSTR(OVMI_SUB, OVM_TYPE_I32)) - C(OVM_TYPED_INSTR(OVMI_SUB, OVM_TYPE_I64)) - C(OVM_TYPED_INSTR(OVMI_SUB, OVM_TYPE_F32)) - C(OVM_TYPED_INSTR(OVMI_SUB, OVM_TYPE_F64)) - - C(OVM_TYPED_INSTR(OVMI_MUL, OVM_TYPE_I8)) - C(OVM_TYPED_INSTR(OVMI_MUL, OVM_TYPE_I16)) - C(OVM_TYPED_INSTR(OVMI_MUL, OVM_TYPE_I32)) - C(OVM_TYPED_INSTR(OVMI_MUL, OVM_TYPE_I64)) - C(OVM_TYPED_INSTR(OVMI_MUL, OVM_TYPE_F32)) - C(OVM_TYPED_INSTR(OVMI_MUL, OVM_TYPE_F64)) - - C(OVM_TYPED_INSTR(OVMI_DIV, OVM_TYPE_I8)) - C(OVM_TYPED_INSTR(OVMI_DIV, OVM_TYPE_I16)) - C(OVM_TYPED_INSTR(OVMI_DIV, OVM_TYPE_I32)) - C(OVM_TYPED_INSTR(OVMI_DIV, OVM_TYPE_I64)) - C(OVM_TYPED_INSTR(OVMI_DIV, OVM_TYPE_F32)) - C(OVM_TYPED_INSTR(OVMI_DIV, OVM_TYPE_F64)) - - C(OVM_TYPED_INSTR(OVMI_DIV_S, OVM_TYPE_I8)) - C(OVM_TYPED_INSTR(OVMI_DIV_S, OVM_TYPE_I16)) - C(OVM_TYPED_INSTR(OVMI_DIV_S, OVM_TYPE_I32)) - C(OVM_TYPED_INSTR(OVMI_DIV_S, OVM_TYPE_I64)) - C(OVM_TYPED_INSTR(OVMI_DIV_S, OVM_TYPE_F32)) - C(OVM_TYPED_INSTR(OVMI_DIV_S, OVM_TYPE_F64)) - - C(OVM_TYPED_INSTR(OVMI_REM, OVM_TYPE_I8)) - C(OVM_TYPED_INSTR(OVMI_REM, OVM_TYPE_I16)) - C(OVM_TYPED_INSTR(OVMI_REM, OVM_TYPE_I32)) - C(OVM_TYPED_INSTR(OVMI_REM, OVM_TYPE_I64)) - - C(OVM_TYPED_INSTR(OVMI_REM_S, OVM_TYPE_I8)) - C(OVM_TYPED_INSTR(OVMI_REM_S, OVM_TYPE_I16)) - C(OVM_TYPED_INSTR(OVMI_REM_S, OVM_TYPE_I32)) - C(OVM_TYPED_INSTR(OVMI_REM_S, OVM_TYPE_I64)) - - C(OVM_TYPED_INSTR(OVMI_AND, OVM_TYPE_I8)) - C(OVM_TYPED_INSTR(OVMI_AND, OVM_TYPE_I16)) - C(OVM_TYPED_INSTR(OVMI_AND, OVM_TYPE_I32)) - C(OVM_TYPED_INSTR(OVMI_AND, OVM_TYPE_I64)) - - C(OVM_TYPED_INSTR(OVMI_OR, OVM_TYPE_I8)) - C(OVM_TYPED_INSTR(OVMI_OR, OVM_TYPE_I16)) - C(OVM_TYPED_INSTR(OVMI_OR, OVM_TYPE_I32)) - C(OVM_TYPED_INSTR(OVMI_OR, OVM_TYPE_I64)) - - C(OVM_TYPED_INSTR(OVMI_XOR, OVM_TYPE_I8)) - C(OVM_TYPED_INSTR(OVMI_XOR, OVM_TYPE_I16)) - C(OVM_TYPED_INSTR(OVMI_XOR, OVM_TYPE_I32)) - C(OVM_TYPED_INSTR(OVMI_XOR, OVM_TYPE_I64)) - - C(OVM_TYPED_INSTR(OVMI_SHL, OVM_TYPE_I8)) - C(OVM_TYPED_INSTR(OVMI_SHL, OVM_TYPE_I16)) - C(OVM_TYPED_INSTR(OVMI_SHL, OVM_TYPE_I32)) - C(OVM_TYPED_INSTR(OVMI_SHL, OVM_TYPE_I64)) - - C(OVM_TYPED_INSTR(OVMI_SHR, OVM_TYPE_I8)) - C(OVM_TYPED_INSTR(OVMI_SHR, OVM_TYPE_I16)) - C(OVM_TYPED_INSTR(OVMI_SHR, OVM_TYPE_I32)) - C(OVM_TYPED_INSTR(OVMI_SHR, OVM_TYPE_I64)) - - C(OVM_TYPED_INSTR(OVMI_SAR, OVM_TYPE_I8)) - C(OVM_TYPED_INSTR(OVMI_SAR, OVM_TYPE_I16)) - C(OVM_TYPED_INSTR(OVMI_SAR, OVM_TYPE_I32)) - C(OVM_TYPED_INSTR(OVMI_SAR, OVM_TYPE_I64)) - - C(OVM_TYPED_INSTR(OVMI_IMM, OVM_TYPE_I8)) - C(OVM_TYPED_INSTR(OVMI_IMM, OVM_TYPE_I16)) - C(OVM_TYPED_INSTR(OVMI_IMM, OVM_TYPE_I32)) - C(OVM_TYPED_INSTR(OVMI_IMM, OVM_TYPE_I64)) - C(OVM_TYPED_INSTR(OVMI_IMM, OVM_TYPE_F32)) - C(OVM_TYPED_INSTR(OVMI_IMM, OVM_TYPE_F64)) - - C(OVMI_MOV) - C(OVM_TYPED_INSTR(OVMI_LOAD, OVM_TYPE_I8)) - C(OVM_TYPED_INSTR(OVMI_LOAD, OVM_TYPE_I16)) - C(OVM_TYPED_INSTR(OVMI_LOAD, OVM_TYPE_I32)) - C(OVM_TYPED_INSTR(OVMI_LOAD, OVM_TYPE_I64)) - C(OVM_TYPED_INSTR(OVMI_LOAD, OVM_TYPE_F32)) - C(OVM_TYPED_INSTR(OVMI_LOAD, OVM_TYPE_F64)) - C(OVM_TYPED_INSTR(OVMI_STORE, OVM_TYPE_I8)) - C(OVM_TYPED_INSTR(OVMI_STORE, OVM_TYPE_I16)) - C(OVM_TYPED_INSTR(OVMI_STORE, OVM_TYPE_I32)) - C(OVM_TYPED_INSTR(OVMI_STORE, OVM_TYPE_I64)) - C(OVM_TYPED_INSTR(OVMI_STORE, OVM_TYPE_F32)) - C(OVM_TYPED_INSTR(OVMI_STORE, OVM_TYPE_F64)) - C(OVMI_COPY) - C(OVMI_FILL) - - C(OVMI_REG_GET) - C(OVMI_REG_SET) - - C(OVMI_IDX_ARR) - - C(OVM_TYPED_INSTR(OVMI_LT, OVM_TYPE_I8)) - C(OVM_TYPED_INSTR(OVMI_LT, OVM_TYPE_I16)) - C(OVM_TYPED_INSTR(OVMI_LT, OVM_TYPE_I32)) - C(OVM_TYPED_INSTR(OVMI_LT, OVM_TYPE_I64)) - C(OVM_TYPED_INSTR(OVMI_LT, OVM_TYPE_F32)) - C(OVM_TYPED_INSTR(OVMI_LT, OVM_TYPE_F64)) - - C(OVM_TYPED_INSTR(OVMI_LT_S, OVM_TYPE_I8)) - C(OVM_TYPED_INSTR(OVMI_LT_S, OVM_TYPE_I16)) - C(OVM_TYPED_INSTR(OVMI_LT_S, OVM_TYPE_I32)) - C(OVM_TYPED_INSTR(OVMI_LT_S, OVM_TYPE_I64)) - C(OVM_TYPED_INSTR(OVMI_LT_S, OVM_TYPE_F32)) - C(OVM_TYPED_INSTR(OVMI_LT_S, OVM_TYPE_F64)) - - C(OVM_TYPED_INSTR(OVMI_LE, OVM_TYPE_I8)) - C(OVM_TYPED_INSTR(OVMI_LE, OVM_TYPE_I16)) - C(OVM_TYPED_INSTR(OVMI_LE, OVM_TYPE_I32)) - C(OVM_TYPED_INSTR(OVMI_LE, OVM_TYPE_I64)) - C(OVM_TYPED_INSTR(OVMI_LE, OVM_TYPE_F32)) - C(OVM_TYPED_INSTR(OVMI_LE, OVM_TYPE_F64)) - - C(OVM_TYPED_INSTR(OVMI_LE_S, OVM_TYPE_I8)) - C(OVM_TYPED_INSTR(OVMI_LE_S, OVM_TYPE_I16)) - C(OVM_TYPED_INSTR(OVMI_LE_S, OVM_TYPE_I32)) - C(OVM_TYPED_INSTR(OVMI_LE_S, OVM_TYPE_I64)) - C(OVM_TYPED_INSTR(OVMI_LE_S, OVM_TYPE_F32)) - C(OVM_TYPED_INSTR(OVMI_LE_S, OVM_TYPE_F64)) - - C(OVM_TYPED_INSTR(OVMI_EQ, OVM_TYPE_I8)) - C(OVM_TYPED_INSTR(OVMI_EQ, OVM_TYPE_I16)) - C(OVM_TYPED_INSTR(OVMI_EQ, OVM_TYPE_I32)) - C(OVM_TYPED_INSTR(OVMI_EQ, OVM_TYPE_I64)) - C(OVM_TYPED_INSTR(OVMI_EQ, OVM_TYPE_F32)) - C(OVM_TYPED_INSTR(OVMI_EQ, OVM_TYPE_F64)) - - C(OVM_TYPED_INSTR(OVMI_GE, OVM_TYPE_I8)) - C(OVM_TYPED_INSTR(OVMI_GE, OVM_TYPE_I16)) - C(OVM_TYPED_INSTR(OVMI_GE, OVM_TYPE_I32)) - C(OVM_TYPED_INSTR(OVMI_GE, OVM_TYPE_I64)) - C(OVM_TYPED_INSTR(OVMI_GE, OVM_TYPE_F32)) - C(OVM_TYPED_INSTR(OVMI_GE, OVM_TYPE_F64)) - - C(OVM_TYPED_INSTR(OVMI_GE_S, OVM_TYPE_I8)) - C(OVM_TYPED_INSTR(OVMI_GE_S, OVM_TYPE_I16)) - C(OVM_TYPED_INSTR(OVMI_GE_S, OVM_TYPE_I32)) - C(OVM_TYPED_INSTR(OVMI_GE_S, OVM_TYPE_I64)) - C(OVM_TYPED_INSTR(OVMI_GE_S, OVM_TYPE_F32)) - C(OVM_TYPED_INSTR(OVMI_GE_S, OVM_TYPE_F64)) - - C(OVM_TYPED_INSTR(OVMI_GT, OVM_TYPE_I8)) - C(OVM_TYPED_INSTR(OVMI_GT, OVM_TYPE_I16)) - C(OVM_TYPED_INSTR(OVMI_GT, OVM_TYPE_I32)) - C(OVM_TYPED_INSTR(OVMI_GT, OVM_TYPE_I64)) - C(OVM_TYPED_INSTR(OVMI_GT, OVM_TYPE_F32)) - C(OVM_TYPED_INSTR(OVMI_GT, OVM_TYPE_F64)) - - C(OVM_TYPED_INSTR(OVMI_GT_S, OVM_TYPE_I8)) - C(OVM_TYPED_INSTR(OVMI_GT_S, OVM_TYPE_I16)) - C(OVM_TYPED_INSTR(OVMI_GT_S, OVM_TYPE_I32)) - C(OVM_TYPED_INSTR(OVMI_GT_S, OVM_TYPE_I64)) - C(OVM_TYPED_INSTR(OVMI_GT_S, OVM_TYPE_F32)) - C(OVM_TYPED_INSTR(OVMI_GT_S, OVM_TYPE_F64)) - - C(OVM_TYPED_INSTR(OVMI_NE, OVM_TYPE_I8)) - C(OVM_TYPED_INSTR(OVMI_NE, OVM_TYPE_I16)) - C(OVM_TYPED_INSTR(OVMI_NE, OVM_TYPE_I32)) - C(OVM_TYPED_INSTR(OVMI_NE, OVM_TYPE_I64)) - C(OVM_TYPED_INSTR(OVMI_NE, OVM_TYPE_F32)) - C(OVM_TYPED_INSTR(OVMI_NE, OVM_TYPE_F64)) - - C(OVMI_PARAM) - C(OVMI_RETURN) - C(OVMI_CALL) - C(OVMI_CALLI) - - C(OVMI_BR) - C(OVMI_BR_Z) - C(OVMI_BR_NZ) - C(OVMI_BRI) - C(OVMI_BRI_Z) - C(OVMI_BRI_NZ) - - C(OVM_TYPED_INSTR(OVMI_CLZ, OVM_TYPE_I8)) - C(OVM_TYPED_INSTR(OVMI_CLZ, OVM_TYPE_I16)) - C(OVM_TYPED_INSTR(OVMI_CLZ, OVM_TYPE_I32)) - C(OVM_TYPED_INSTR(OVMI_CLZ, OVM_TYPE_I64)) - C(OVM_TYPED_INSTR(OVMI_CTZ, OVM_TYPE_I8)) - C(OVM_TYPED_INSTR(OVMI_CTZ, OVM_TYPE_I16)) - C(OVM_TYPED_INSTR(OVMI_CTZ, OVM_TYPE_I32)) - C(OVM_TYPED_INSTR(OVMI_CTZ, OVM_TYPE_I64)) - C(OVM_TYPED_INSTR(OVMI_POPCNT, OVM_TYPE_I8)) - C(OVM_TYPED_INSTR(OVMI_POPCNT, OVM_TYPE_I16)) - C(OVM_TYPED_INSTR(OVMI_POPCNT, OVM_TYPE_I32)) - C(OVM_TYPED_INSTR(OVMI_POPCNT, OVM_TYPE_I64)) - C(OVM_TYPED_INSTR(OVMI_ROTL, OVM_TYPE_I8)) - C(OVM_TYPED_INSTR(OVMI_ROTL, OVM_TYPE_I16)) - C(OVM_TYPED_INSTR(OVMI_ROTL, OVM_TYPE_I32)) - C(OVM_TYPED_INSTR(OVMI_ROTL, OVM_TYPE_I64)) - C(OVM_TYPED_INSTR(OVMI_ROTR, OVM_TYPE_I8)) - C(OVM_TYPED_INSTR(OVMI_ROTR, OVM_TYPE_I16)) - C(OVM_TYPED_INSTR(OVMI_ROTR, OVM_TYPE_I32)) - C(OVM_TYPED_INSTR(OVMI_ROTR, OVM_TYPE_I64)) - - C(OVM_TYPED_INSTR(OVMI_ABS, OVM_TYPE_F32)) - C(OVM_TYPED_INSTR(OVMI_NEG, OVM_TYPE_F32)) - C(OVM_TYPED_INSTR(OVMI_CEIL, OVM_TYPE_F32)) - C(OVM_TYPED_INSTR(OVMI_FLOOR, OVM_TYPE_F32)) - C(OVM_TYPED_INSTR(OVMI_TRUNC, OVM_TYPE_F32)) - C(OVM_TYPED_INSTR(OVMI_NEAREST, OVM_TYPE_F32)) - C(OVM_TYPED_INSTR(OVMI_SQRT, OVM_TYPE_F32)) - C(OVM_TYPED_INSTR(OVMI_MIN, OVM_TYPE_F32)) - C(OVM_TYPED_INSTR(OVMI_MAX, OVM_TYPE_F32)) - C(OVM_TYPED_INSTR(OVMI_COPYSIGN, OVM_TYPE_F32)) - - C(OVM_TYPED_INSTR(OVMI_ABS, OVM_TYPE_F64)) - C(OVM_TYPED_INSTR(OVMI_NEG, OVM_TYPE_F64)) - C(OVM_TYPED_INSTR(OVMI_CEIL, OVM_TYPE_F64)) - C(OVM_TYPED_INSTR(OVMI_FLOOR, OVM_TYPE_F64)) - C(OVM_TYPED_INSTR(OVMI_TRUNC, OVM_TYPE_F64)) - C(OVM_TYPED_INSTR(OVMI_NEAREST, OVM_TYPE_F64)) - C(OVM_TYPED_INSTR(OVMI_SQRT, OVM_TYPE_F64)) - C(OVM_TYPED_INSTR(OVMI_MIN, OVM_TYPE_F64)) - C(OVM_TYPED_INSTR(OVMI_MAX, OVM_TYPE_F64)) - C(OVM_TYPED_INSTR(OVMI_COPYSIGN, OVM_TYPE_F64)) - - C(OVM_TYPED_INSTR(OVMI_CVT_I8, OVM_TYPE_I16)) - C(OVM_TYPED_INSTR(OVMI_CVT_I8, OVM_TYPE_I32)) - C(OVM_TYPED_INSTR(OVMI_CVT_I8, OVM_TYPE_I64)) - - C(OVM_TYPED_INSTR(OVMI_CVT_I16, OVM_TYPE_I8)) - C(OVM_TYPED_INSTR(OVMI_CVT_I16, OVM_TYPE_I32)) - C(OVM_TYPED_INSTR(OVMI_CVT_I16, OVM_TYPE_I64)) - - C(OVM_TYPED_INSTR(OVMI_CVT_I32, OVM_TYPE_I8)) - C(OVM_TYPED_INSTR(OVMI_CVT_I32, OVM_TYPE_I16)) - C(OVM_TYPED_INSTR(OVMI_CVT_I32, OVM_TYPE_I64)) - C(OVM_TYPED_INSTR(OVMI_CVT_I32, OVM_TYPE_F32)) - C(OVM_TYPED_INSTR(OVMI_CVT_I32, OVM_TYPE_F64)) - - C(OVM_TYPED_INSTR(OVMI_CVT_I64, OVM_TYPE_I8)) - C(OVM_TYPED_INSTR(OVMI_CVT_I64, OVM_TYPE_I16)) - C(OVM_TYPED_INSTR(OVMI_CVT_I64, OVM_TYPE_I32)) - C(OVM_TYPED_INSTR(OVMI_CVT_I64, OVM_TYPE_F32)) - C(OVM_TYPED_INSTR(OVMI_CVT_I64, OVM_TYPE_F64)) - - C(OVM_TYPED_INSTR(OVMI_CVT_F32, OVM_TYPE_I32)) - C(OVM_TYPED_INSTR(OVMI_CVT_F32, OVM_TYPE_I64)) - C(OVM_TYPED_INSTR(OVMI_CVT_F32, OVM_TYPE_F64)) - - C(OVM_TYPED_INSTR(OVMI_CVT_F64, OVM_TYPE_I32)) - C(OVM_TYPED_INSTR(OVMI_CVT_F64, OVM_TYPE_I64)) - C(OVM_TYPED_INSTR(OVMI_CVT_F64, OVM_TYPE_F32)) - - C(OVM_TYPED_INSTR(OVMI_CMPXCHG, OVM_TYPE_I8)) - C(OVM_TYPED_INSTR(OVMI_CMPXCHG, OVM_TYPE_I16)) - C(OVM_TYPED_INSTR(OVMI_CMPXCHG, OVM_TYPE_I32)) - C(OVM_TYPED_INSTR(OVMI_CMPXCHG, OVM_TYPE_I64)) - - default: - snprintf(buf, 64, "unknown (%d)", full_instr); - return buf; - } -} -#endif - -void ovm_program_print_instructions(ovm_program_t *program, i32 start_instr, i32 instr_count) { - fori (i, start_instr, start_instr + instr_count) { - // - // Horribly inefficient way of checking to see if this instruction - // is the start of a function, but for now, it'll do. -brendanfh 06/13/2022 - bh_arr_each(ovm_func_t, func, program->funcs) { - if (i == func->start_instr && func->kind == OVM_FUNC_INTERNAL) { - printf("\n[%d] %s values=%d:\n", func->id, func->name, func->value_number_count); - } - } - - ovm_instr_t instr = program->code[i]; - printf("%6lx %50s | r=%02d a=%02d b=%02d i=%d f=%f l=%ld d=%lf\n", i, ovm_instr_name(instr.full_instr), instr.r, instr.a, instr.b, instr.i, instr.f, instr.l, instr.d); - } -} - -void ovm_raw_print_instructions(i32 instr_count, ovm_instr_t *instrs) { - fori (i, 0, instr_count) { - ovm_instr_t instr = instrs[i]; - printf("%6lx %50s | r=%02d a=%02d b=%02d i=%d f=%f l=%ld d=%lf\n", i, ovm_instr_name(instr.full_instr), instr.r, instr.a, instr.b, instr.i, instr.f, instr.l, instr.d); - } -} - // // Engine ovm_engine_t *ovm_engine_new(ovm_store_t *store) { @@ -507,10 +201,6 @@ ovm_state_t *ovm_state_new(ovm_engine_t *engine, ovm_program_t *program) { state->debug = debug_host_lookup_thread(engine->debug, thread_id); } -#ifdef OVM_VERBOSE - ovm_program_print_instructions(program, 0, bh_arr_length(program->code)); -#endif - return state; } diff --git a/interpreter/src/wasm_cli_test.c b/interpreter/src/wasm_cli_test.c index 8903f272..b6ca26fb 100644 --- a/interpreter/src/wasm_cli_test.c +++ b/interpreter/src/wasm_cli_test.c @@ -45,7 +45,5 @@ int main(int argc, char *argv[]) { const wasm_name_t *export_name = wasm_exporttype_name(exports.data[i]); bh_printf("exports: %b %d\n", export_name->data, export_name->size, wasm_externtype_kind(wasm_exporttype_type(exports.data[i]))); } - - ovm_program_print_instructions(module->program, 0, bh_arr_length(module->program->code)); } diff --git a/scripts/onyx-pkg.onyx b/scripts/onyx-pkg.onyx index 5137ae95..af36ece6 100644 --- a/scripts/onyx-pkg.onyx +++ b/scripts/onyx-pkg.onyx @@ -108,13 +108,19 @@ run_init_command :: (args: [] cstr) { printf("Creating new project manifest in {}.\n\n", global_arguments.config_file); - read_field :: macro (f: str, dest: ^$T) { + read_field :: macro (f: str, dest: ^$T, default: T) { while true { print(f); line := r->read_line(consume_newline=true, allocator=context.temp_allocator) |> string.strip_whitespace(); + if !line { + *dest = default; + break; + } + if conv.parse_any(dest, T, line, context.allocator) do break; + if T == str { *cast(^str) dest = string.alloc_copy(line); break; @@ -124,11 +130,11 @@ run_init_command :: (args: [] cstr) { // @TODO // Validation for these fields. r := io.reader_make(^stdio_stream); - read_field("Package name: ", ^config.metadata.name); - read_field("Package description: ", ^config.metadata.description); - read_field("Package url: ", ^config.metadata.url); - read_field("Package author: ", ^config.metadata.author); - read_field("Package version (X.Y.Z): ", ^config.metadata.version); + read_field("Package name: ", ^config.metadata.name, ""); + read_field("Package description: ", ^config.metadata.description, ""); + read_field("Package url: ", ^config.metadata.url, ""); + read_field("Package author: ", ^config.metadata.author, ""); + read_field("Package version (0.0.1): ", ^config.metadata.version, .{0, 0, 1}); } #tag Command.{ "add", "Add a new dependency to the project.", "package-url [version]", @@ -420,11 +426,14 @@ run_list_versions :: (args: [] cstr) { pack := string.as_str(args[0]); + pack = Git.get_full_repo_uri(pack); versions := Git.get_available_versions(pack); defer delete(^versions); + array.sort(versions, SemVer.compare); + for versions { - printf("- {}\n", it); + printf("{}\n", it); } } @@ -726,7 +735,8 @@ Git :: struct { defer delete(^versions); array.sort(versions, SemVer.compare); - return versions[0]; + latest := versions[0]; + return latest; } get_latest_compatible_version :: (repo: str, current_version: SemVer) -> SemVer { @@ -794,13 +804,19 @@ Git :: struct { } if !os.dir_rename(full_dest, actual_dest) { + eprintf("Failed to move temporary package to final destination when fetching {}.\n", repo); os.remove_directory(full_dest); return false; } // Remove the .git folder, as it is unneeded. unnecessary_git_dir := tprintf("{}/.git", actual_dest); - return os.remove_directory(unnecessary_git_dir); + if !os.remove_directory(unnecessary_git_dir) { + eprintf("Failed to delete .git folder of {}.\n", repo); + return false; + } + + return true; } return false; @@ -818,6 +834,7 @@ Git :: struct { run_command(git_path, .["commit", "-m", tprintf("version {}", config.metadata.version)]); run_command(git_path, .["tag", tprintf("v{}", config.metadata.version)]); run_command(git_path, .["push", "--tags"]); + run_command(git_path, .["push"]); return true; } } -- 2.25.1