File tree Expand file tree Collapse file tree 4 files changed +34
-1
lines changed
examples/cpp_component/data_structures/src Expand file tree Collapse file tree 4 files changed +34
-1
lines changed Original file line number Diff line number Diff line change @@ -127,6 +127,10 @@ jobs:
127127 -//examples/cpp_component/multi_component_system:analytics_service \
128128 -//tools/checksum_updater_wasm/... \
129129 -//tools/ssh_keygen:ssh_keygen_test \
130+ -//examples/go_component:calculator_component \
131+ -//examples/go_component:calculator_simple \
132+ -//examples/go_component:calculator_with_bindings \
133+ -//examples/go_component:calculator_simple_binding \
130134
131135 - name : Run Tests
132136 run : bazel test --test_output=errors -- //test/integration:basic_component_build_test //test/integration:basic_component_validation //test/unit:unit_tests //test/wkg/unit:smoke //test/js:test_hello_js_component_provides_info //test/js:test_calc_js_component_provides_info //test/js:test_npm_dependencies_installation
@@ -222,6 +226,10 @@ jobs:
222226 -//tools/checksum_updater_wasm/... \
223227 -//test/integration:wasi_component_wasm_lib_release_host \
224228 -//test/integration:service_b_component_wasm_lib_release_host \
229+ -//examples/go_component:calculator_component \
230+ -//examples/go_component:calculator_simple \
231+ -//examples/go_component:calculator_with_bindings \
232+ -//examples/go_component:calculator_simple_binding \
225233
226234 - name : Run Tests
227235 run : bazel test --test_output=errors -- //test/integration:basic_component_build_test //test/integration:basic_component_validation //test/unit:unit_tests //test/js:test_hello_js_component_provides_info //test/js:test_calc_js_component_provides_info //test/js:test_npm_dependencies_installation
Original file line number Diff line number Diff line change @@ -36,6 +36,19 @@ rust_wasm_component_bindgen(
3636- ** [ Production Deployment] ( /docs-site/src/content/docs/production/ ) ** - OCI publishing, signing, optimization
3737- ** [ Examples] ( examples/ ) ** - Working examples from basic to advanced
3838
39+ ## Known Limitations
40+
41+ ### Go WIT Components (Temporary)
42+ - ** Issue** : WIT-enabled Go components currently fail due to upstream TinyGo limitations
43+ - ** Tracking** : [ GitHub Issue #82 ] ( https://github.com/pulseengine/rules_wasm_component/issues/82 )
44+ - ** Status** : Excluded from CI until [ TinyGo PR #4934 ] ( https://github.com/tinygo-org/tinygo/pull/4934 ) lands
45+ - ** Workaround** : Basic Go components (without WIT) work perfectly
46+
47+ ### C++ Exception Handling
48+ - ** Design** : WASI disables C++ exceptions by default for size/performance
49+ - ** Solution** : Components use error codes instead of exceptions ([ Issue #83 ] ( https://github.com/pulseengine/rules_wasm_component/issues/83 ) )
50+ - ** Override** : Use ` enable_exceptions = True ` for components that require exceptions
51+
3952## Contributing
4053
4154Contributions welcome! See [ CONTRIBUTING.md] ( CONTRIBUTING.md ) for details.
Original file line number Diff line number Diff line change @@ -22,7 +22,11 @@ void MemoryPool::initialize_pool() {
2222 pool_memory_ = static_cast <uint8_t *>(std::aligned_alloc (config_.alignment , total_size_));
2323
2424 if (!pool_memory_) {
25- throw std::bad_alloc ();
25+ // WASI-compatible: Set error state instead of throwing
26+ // The pool will remain in an invalid state and operations will fail gracefully
27+ pool_memory_ = nullptr ;
28+ total_size_ = 0 ;
29+ return ;
2630 }
2731
2832 // Initialize the entire pool as one large free block
@@ -48,6 +52,11 @@ void MemoryPool::cleanup_pool() {
4852
4953void * MemoryPool::allocate (size_t size) {
5054 if (size == 0 ) return nullptr ;
55+
56+ // WASI-compatible: Check initialization before proceeding
57+ if (!is_initialized ()) {
58+ return nullptr ; // Graceful failure instead of crash
59+ }
5160
5261 std::lock_guard<std::mutex> lock (config_.enable_thread_safety ? mutex_ :
5362 *reinterpret_cast <std::mutex*>(nullptr ));
Original file line number Diff line number Diff line change @@ -92,6 +92,9 @@ class MemoryPool {
9292 size_t get_free_size () const { return total_size_ - used_size_; }
9393 bool is_valid_pointer (void * ptr) const ;
9494 size_t get_allocation_size (void * ptr) const ;
95+
96+ // WASI-compatible initialization check
97+ bool is_initialized () const { return pool_memory_ != nullptr && total_size_ > 0 ; }
9598
9699 // Configuration
97100 void set_debug_enabled (bool enabled) { config_.enable_debug = enabled; }
You can’t perform that action at this time.
0 commit comments