WASM Python integration milestone - game.py runs in browser
Major milestone for issue #158 (Emscripten/WebAssembly build target): - Python 3.14 successfully initializes and runs in WASM - mcrfpy module loads and works correctly - Game scripts execute with full level generation - Entities (boulders, rats, cyclops, spawn points) placed correctly Key changes: - CMakeLists.txt: Add 2MB stack, Emscripten link options, preload files - platform.h: Add WASM-specific implementations for executable paths - HeadlessTypes.h: Make Texture/Font/Sound stubs return success - CommandLineParser.cpp: Guard filesystem operations for WASM - McRFPy_API.cpp: Add WASM path configuration, debug output - game.py: Make 'code' module import optional (not available in WASM) - wasm_stdlib/: Add minimal Python stdlib for WASM (~4MB) Build with: emmake make (from build-emscripten/) Test with: node mcrogueface.js Next steps: - Integrate VRSFML for actual WebGL rendering - Create HTML page to host WASM build - Test in actual browsers Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
07fd12373d
commit
8c3128e29c
222 changed files with 80639 additions and 25 deletions
50
wasm_stdlib/lib/python3.14/importlib/machinery.py
Normal file
50
wasm_stdlib/lib/python3.14/importlib/machinery.py
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
"""The machinery of importlib: finders, loaders, hooks, etc."""
|
||||
|
||||
from ._bootstrap import ModuleSpec
|
||||
from ._bootstrap import BuiltinImporter
|
||||
from ._bootstrap import FrozenImporter
|
||||
from ._bootstrap_external import (
|
||||
SOURCE_SUFFIXES, BYTECODE_SUFFIXES, EXTENSION_SUFFIXES,
|
||||
DEBUG_BYTECODE_SUFFIXES as _DEBUG_BYTECODE_SUFFIXES,
|
||||
OPTIMIZED_BYTECODE_SUFFIXES as _OPTIMIZED_BYTECODE_SUFFIXES
|
||||
)
|
||||
from ._bootstrap_external import WindowsRegistryFinder
|
||||
from ._bootstrap_external import PathFinder
|
||||
from ._bootstrap_external import FileFinder
|
||||
from ._bootstrap_external import SourceFileLoader
|
||||
from ._bootstrap_external import SourcelessFileLoader
|
||||
from ._bootstrap_external import ExtensionFileLoader
|
||||
from ._bootstrap_external import AppleFrameworkLoader
|
||||
from ._bootstrap_external import NamespaceLoader
|
||||
|
||||
|
||||
def all_suffixes():
|
||||
"""Returns a list of all recognized module suffixes for this process"""
|
||||
return SOURCE_SUFFIXES + BYTECODE_SUFFIXES + EXTENSION_SUFFIXES
|
||||
|
||||
|
||||
__all__ = ['AppleFrameworkLoader', 'BYTECODE_SUFFIXES', 'BuiltinImporter',
|
||||
'DEBUG_BYTECODE_SUFFIXES', 'EXTENSION_SUFFIXES',
|
||||
'ExtensionFileLoader', 'FileFinder', 'FrozenImporter', 'ModuleSpec',
|
||||
'NamespaceLoader', 'OPTIMIZED_BYTECODE_SUFFIXES', 'PathFinder',
|
||||
'SOURCE_SUFFIXES', 'SourceFileLoader', 'SourcelessFileLoader',
|
||||
'WindowsRegistryFinder', 'all_suffixes']
|
||||
|
||||
|
||||
def __getattr__(name):
|
||||
import warnings
|
||||
|
||||
if name == 'DEBUG_BYTECODE_SUFFIXES':
|
||||
warnings.warn('importlib.machinery.DEBUG_BYTECODE_SUFFIXES is '
|
||||
'deprecated; use importlib.machinery.BYTECODE_SUFFIXES '
|
||||
'instead.',
|
||||
DeprecationWarning, stacklevel=2)
|
||||
return _DEBUG_BYTECODE_SUFFIXES
|
||||
elif name == 'OPTIMIZED_BYTECODE_SUFFIXES':
|
||||
warnings.warn('importlib.machinery.OPTIMIZED_BYTECODE_SUFFIXES is '
|
||||
'deprecated; use importlib.machinery.BYTECODE_SUFFIXES '
|
||||
'instead.',
|
||||
DeprecationWarning, stacklevel=2)
|
||||
return _OPTIMIZED_BYTECODE_SUFFIXES
|
||||
|
||||
raise AttributeError(f'module {__name__!r} has no attribute {name!r}')
|
||||
Loading…
Add table
Add a link
Reference in a new issue