zexus 1.6.8 → 1.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/README.md +12 -5
  2. package/package.json +1 -1
  3. package/src/__init__.py +7 -0
  4. package/src/zexus/__init__.py +1 -1
  5. package/src/zexus/__pycache__/__init__.cpython-312.pyc +0 -0
  6. package/src/zexus/__pycache__/capability_system.cpython-312.pyc +0 -0
  7. package/src/zexus/__pycache__/debug_sanitizer.cpython-312.pyc +0 -0
  8. package/src/zexus/__pycache__/environment.cpython-312.pyc +0 -0
  9. package/src/zexus/__pycache__/error_reporter.cpython-312.pyc +0 -0
  10. package/src/zexus/__pycache__/input_validation.cpython-312.pyc +0 -0
  11. package/src/zexus/__pycache__/lexer.cpython-312.pyc +0 -0
  12. package/src/zexus/__pycache__/module_cache.cpython-312.pyc +0 -0
  13. package/src/zexus/__pycache__/module_manager.cpython-312.pyc +0 -0
  14. package/src/zexus/__pycache__/object.cpython-312.pyc +0 -0
  15. package/src/zexus/__pycache__/security.cpython-312.pyc +0 -0
  16. package/src/zexus/__pycache__/security_enforcement.cpython-312.pyc +0 -0
  17. package/src/zexus/__pycache__/syntax_validator.cpython-312.pyc +0 -0
  18. package/src/zexus/__pycache__/zexus_ast.cpython-312.pyc +0 -0
  19. package/src/zexus/__pycache__/zexus_token.cpython-312.pyc +0 -0
  20. package/src/zexus/access_control_system/__pycache__/__init__.cpython-312.pyc +0 -0
  21. package/src/zexus/access_control_system/__pycache__/access_control.cpython-312.pyc +0 -0
  22. package/src/zexus/advanced_types.py +17 -2
  23. package/src/zexus/blockchain/__init__.py +411 -0
  24. package/src/zexus/blockchain/accelerator.py +1160 -0
  25. package/src/zexus/blockchain/chain.py +660 -0
  26. package/src/zexus/blockchain/consensus.py +821 -0
  27. package/src/zexus/blockchain/contract_vm.py +1019 -0
  28. package/src/zexus/blockchain/crypto.py +79 -14
  29. package/src/zexus/blockchain/events.py +526 -0
  30. package/src/zexus/blockchain/loadtest.py +721 -0
  31. package/src/zexus/blockchain/monitoring.py +350 -0
  32. package/src/zexus/blockchain/mpt.py +716 -0
  33. package/src/zexus/blockchain/multichain.py +951 -0
  34. package/src/zexus/blockchain/multiprocess_executor.py +338 -0
  35. package/src/zexus/blockchain/network.py +886 -0
  36. package/src/zexus/blockchain/node.py +666 -0
  37. package/src/zexus/blockchain/rpc.py +1203 -0
  38. package/src/zexus/blockchain/rust_bridge.py +421 -0
  39. package/src/zexus/blockchain/storage.py +423 -0
  40. package/src/zexus/blockchain/tokens.py +750 -0
  41. package/src/zexus/blockchain/upgradeable.py +1004 -0
  42. package/src/zexus/blockchain/verification.py +1602 -0
  43. package/src/zexus/blockchain/wallet.py +621 -0
  44. package/src/zexus/capability_system.py +184 -9
  45. package/src/zexus/cli/__pycache__/main.cpython-312.pyc +0 -0
  46. package/src/zexus/cli/main.py +383 -34
  47. package/src/zexus/cli/zpm.py +1 -1
  48. package/src/zexus/compiler/__pycache__/bytecode.cpython-312.pyc +0 -0
  49. package/src/zexus/compiler/__pycache__/lexer.cpython-312.pyc +0 -0
  50. package/src/zexus/compiler/__pycache__/parser.cpython-312.pyc +0 -0
  51. package/src/zexus/compiler/__pycache__/semantic.cpython-312.pyc +0 -0
  52. package/src/zexus/compiler/__pycache__/zexus_ast.cpython-312.pyc +0 -0
  53. package/src/zexus/compiler/bytecode.py +124 -7
  54. package/src/zexus/compiler/compat_runtime.py +6 -2
  55. package/src/zexus/compiler/lexer.py +16 -5
  56. package/src/zexus/compiler/parser.py +108 -7
  57. package/src/zexus/compiler/semantic.py +18 -19
  58. package/src/zexus/compiler/zexus_ast.py +26 -1
  59. package/src/zexus/concurrency_system.py +79 -0
  60. package/src/zexus/config.py +54 -0
  61. package/src/zexus/crypto_bridge.py +244 -8
  62. package/src/zexus/dap/__init__.py +10 -0
  63. package/src/zexus/dap/__main__.py +4 -0
  64. package/src/zexus/dap/dap_server.py +391 -0
  65. package/src/zexus/dap/debug_engine.py +298 -0
  66. package/src/zexus/environment.py +112 -9
  67. package/src/zexus/evaluator/__pycache__/bytecode_compiler.cpython-312.pyc +0 -0
  68. package/src/zexus/evaluator/__pycache__/core.cpython-312.pyc +0 -0
  69. package/src/zexus/evaluator/__pycache__/expressions.cpython-312.pyc +0 -0
  70. package/src/zexus/evaluator/__pycache__/functions.cpython-312.pyc +0 -0
  71. package/src/zexus/evaluator/__pycache__/resource_limiter.cpython-312.pyc +0 -0
  72. package/src/zexus/evaluator/__pycache__/statements.cpython-312.pyc +0 -0
  73. package/src/zexus/evaluator/__pycache__/unified_execution.cpython-312.pyc +0 -0
  74. package/src/zexus/evaluator/__pycache__/utils.cpython-312.pyc +0 -0
  75. package/src/zexus/evaluator/bytecode_compiler.py +457 -37
  76. package/src/zexus/evaluator/core.py +644 -50
  77. package/src/zexus/evaluator/expressions.py +358 -62
  78. package/src/zexus/evaluator/functions.py +458 -20
  79. package/src/zexus/evaluator/resource_limiter.py +4 -4
  80. package/src/zexus/evaluator/statements.py +774 -122
  81. package/src/zexus/evaluator/unified_execution.py +573 -72
  82. package/src/zexus/evaluator/utils.py +14 -2
  83. package/src/zexus/evaluator_original.py +1 -1
  84. package/src/zexus/event_loop.py +186 -0
  85. package/src/zexus/lexer.py +742 -458
  86. package/src/zexus/lsp/__init__.py +1 -1
  87. package/src/zexus/lsp/definition_provider.py +163 -9
  88. package/src/zexus/lsp/server.py +22 -8
  89. package/src/zexus/lsp/symbol_provider.py +182 -9
  90. package/src/zexus/module_cache.py +239 -9
  91. package/src/zexus/module_manager.py +129 -1
  92. package/src/zexus/object.py +76 -6
  93. package/src/zexus/parser/__pycache__/parser.cpython-312.pyc +0 -0
  94. package/src/zexus/parser/__pycache__/strategy_context.cpython-312.pyc +0 -0
  95. package/src/zexus/parser/__pycache__/strategy_structural.cpython-312.pyc +0 -0
  96. package/src/zexus/parser/parser.py +1349 -408
  97. package/src/zexus/parser/strategy_context.py +755 -58
  98. package/src/zexus/parser/strategy_structural.py +121 -21
  99. package/src/zexus/persistence.py +15 -1
  100. package/src/zexus/renderer/__init__.py +61 -0
  101. package/src/zexus/renderer/__pycache__/__init__.cpython-312.pyc +0 -0
  102. package/src/zexus/renderer/__pycache__/backend.cpython-312.pyc +0 -0
  103. package/src/zexus/renderer/__pycache__/canvas.cpython-312.pyc +0 -0
  104. package/src/zexus/renderer/__pycache__/color_system.cpython-312.pyc +0 -0
  105. package/src/zexus/renderer/__pycache__/layout.cpython-312.pyc +0 -0
  106. package/src/zexus/renderer/__pycache__/main_renderer.cpython-312.pyc +0 -0
  107. package/src/zexus/renderer/__pycache__/painter.cpython-312.pyc +0 -0
  108. package/src/zexus/renderer/backend.py +261 -0
  109. package/src/zexus/renderer/canvas.py +78 -0
  110. package/src/zexus/renderer/color_system.py +201 -0
  111. package/src/zexus/renderer/graphics.py +31 -0
  112. package/src/zexus/renderer/layout.py +222 -0
  113. package/src/zexus/renderer/main_renderer.py +66 -0
  114. package/src/zexus/renderer/painter.py +30 -0
  115. package/src/zexus/renderer/tk_backend.py +208 -0
  116. package/src/zexus/renderer/web_backend.py +260 -0
  117. package/src/zexus/runtime/__init__.py +10 -2
  118. package/src/zexus/runtime/__pycache__/__init__.cpython-312.pyc +0 -0
  119. package/src/zexus/runtime/__pycache__/async_runtime.cpython-312.pyc +0 -0
  120. package/src/zexus/runtime/__pycache__/load_manager.cpython-312.pyc +0 -0
  121. package/src/zexus/runtime/file_flags.py +137 -0
  122. package/src/zexus/runtime/load_manager.py +368 -0
  123. package/src/zexus/safety/__pycache__/__init__.cpython-312.pyc +0 -0
  124. package/src/zexus/safety/__pycache__/memory_safety.cpython-312.pyc +0 -0
  125. package/src/zexus/security.py +424 -34
  126. package/src/zexus/stdlib/fs.py +23 -18
  127. package/src/zexus/stdlib/http.py +289 -186
  128. package/src/zexus/stdlib/sockets.py +207 -163
  129. package/src/zexus/stdlib/websockets.py +282 -0
  130. package/src/zexus/stdlib_integration.py +369 -2
  131. package/src/zexus/strategy_recovery.py +6 -3
  132. package/src/zexus/type_checker.py +423 -0
  133. package/src/zexus/virtual_filesystem.py +189 -2
  134. package/src/zexus/vm/__init__.py +113 -3
  135. package/src/zexus/vm/__pycache__/async_optimizer.cpython-312.pyc +0 -0
  136. package/src/zexus/vm/__pycache__/bytecode.cpython-312.pyc +0 -0
  137. package/src/zexus/vm/__pycache__/bytecode_converter.cpython-312.pyc +0 -0
  138. package/src/zexus/vm/__pycache__/cache.cpython-312.pyc +0 -0
  139. package/src/zexus/vm/__pycache__/compiler.cpython-312.pyc +0 -0
  140. package/src/zexus/vm/__pycache__/gas_metering.cpython-312.pyc +0 -0
  141. package/src/zexus/vm/__pycache__/jit.cpython-312.pyc +0 -0
  142. package/src/zexus/vm/__pycache__/parallel_vm.cpython-312.pyc +0 -0
  143. package/src/zexus/vm/__pycache__/vm.cpython-312.pyc +0 -0
  144. package/src/zexus/vm/async_optimizer.py +80 -6
  145. package/src/zexus/vm/binary_bytecode.py +659 -0
  146. package/src/zexus/vm/bytecode.py +59 -11
  147. package/src/zexus/vm/bytecode_converter.py +26 -12
  148. package/src/zexus/vm/cabi.c +1985 -0
  149. package/src/zexus/vm/cabi.cpython-312-x86_64-linux-gnu.so +0 -0
  150. package/src/zexus/vm/cabi.h +127 -0
  151. package/src/zexus/vm/cache.py +561 -17
  152. package/src/zexus/vm/compiler.py +818 -51
  153. package/src/zexus/vm/fastops.c +15743 -0
  154. package/src/zexus/vm/fastops.cpython-312-x86_64-linux-gnu.so +0 -0
  155. package/src/zexus/vm/fastops.pyx +288 -0
  156. package/src/zexus/vm/gas_metering.py +50 -9
  157. package/src/zexus/vm/jit.py +364 -20
  158. package/src/zexus/vm/native_jit_backend.py +1816 -0
  159. package/src/zexus/vm/native_runtime.cpp +1388 -0
  160. package/src/zexus/vm/native_runtime.cpython-312-x86_64-linux-gnu.so +0 -0
  161. package/src/zexus/vm/optimizer.py +161 -11
  162. package/src/zexus/vm/parallel_vm.py +140 -45
  163. package/src/zexus/vm/peephole_optimizer.py +82 -4
  164. package/src/zexus/vm/profiler.py +38 -18
  165. package/src/zexus/vm/register_allocator.py +16 -5
  166. package/src/zexus/vm/register_vm.py +8 -5
  167. package/src/zexus/vm/vm.py +3581 -531
  168. package/src/zexus/vm/wasm_compiler.py +658 -0
  169. package/src/zexus/zexus_ast.py +137 -11
  170. package/src/zexus/zexus_token.py +16 -5
  171. package/src/zexus/zpm/installer.py +55 -15
  172. package/src/zexus/zpm/package_manager.py +1 -1
  173. package/src/zexus/zpm/registry.py +257 -28
  174. package/src/zexus.egg-info/PKG-INFO +16 -6
  175. package/src/zexus.egg-info/SOURCES.txt +129 -17
  176. package/src/zexus.egg-info/entry_points.txt +1 -0
  177. package/src/zexus.egg-info/requires.txt +4 -0
@@ -62,6 +62,7 @@ class Opcode(IntEnum):
62
62
  BUILD_SET = 62 # Build set from stack items
63
63
  INDEX = 63 # Index into collection
64
64
  SLICE = 64 # Slice operation
65
+ GET_ATTR = 65 # Get attribute/property of object
65
66
 
66
67
  # Async/Concurrency
67
68
  SPAWN = 70 # Spawn coroutine/task
@@ -146,7 +147,33 @@ class Opcode(IntEnum):
146
147
  DEFINE_SCREEN = 120
147
148
  DEFINE_COMPONENT = 121
148
149
  DEFINE_THEME = 122
149
-
150
+
151
+ # Security & Contracts (130-149)
152
+ REQUIRE = 130 # require(condition, message)
153
+ DEFINE_CONTRACT = 131 # Define smart contract
154
+ DEFINE_ENTITY = 132 # Define entity
155
+ DEFINE_CAPABILITY = 133 # Define capability
156
+ GRANT_CAPABILITY = 134 # Grant capability
157
+ REVOKE_CAPABILITY = 135 # Revoke capability
158
+
159
+ # Audit & Access Control (136-139)
160
+ AUDIT_LOG = 136 # Audit log
161
+ RESTRICT_ACCESS = 137 # Restrict access
162
+
163
+ # Exception Handling (140-149)
164
+ SETUP_TRY = 140 # Start try block
165
+ POP_TRY = 141 # End try block / clean up handler
166
+ THROW = 142 # Throw exception
167
+
168
+ # Iteration (150-159)
169
+ FOR_ITER = 150 # Get next item from iterator
170
+
171
+ # System & Modes (160-169)
172
+ ENABLE_ERROR_MODE = 160 # Enable global continue-on-error mode
173
+
174
+ # Register-based operations (200-299) - Phase 5
175
+ # FOR_ITER removed (duplicate)
176
+
150
177
  # Special
151
178
  NOP = 255 # No operation
152
179
 
@@ -250,12 +277,33 @@ class BytecodeBuilder:
250
277
  self._label_positions: Dict[str, int] = {}
251
278
  self._forward_refs: Dict[str, List[int]] = {}
252
279
 
253
- def emit(self, opcode: str, operand: Any = None) -> int:
254
- """Emit an instruction"""
255
- return self.bytecode.add_instruction(opcode, operand)
256
-
257
- def emit_constant(self, value: Any) -> int:
258
- """Emit LOAD_CONST instruction"""
280
+ def emit(self, opcode: Any, operand: Any = None) -> int:
281
+ """Emit an instruction, normalizing opcode names to Opcode enum when possible."""
282
+ normalized = opcode
283
+ if isinstance(opcode, str):
284
+ try:
285
+ normalized = Opcode[opcode]
286
+ except KeyError:
287
+ normalized = opcode # Leave custom opcodes untouched
288
+ return self.bytecode.add_instruction(normalized, operand)
289
+
290
+ def emit_constant(self, value: Any, legacy_operand: Any = None) -> int:
291
+ """Emit LOAD_CONST instruction (legacy-compatible)."""
292
+ # Legacy call signature: emit_constant("LOAD_CONST", actual_value)
293
+ if legacy_operand is not None and isinstance(value, str):
294
+ opcode = value
295
+ operand = legacy_operand
296
+
297
+ if opcode == "LOAD_CONST":
298
+ const_idx = self.bytecode.add_constant(operand)
299
+ return self.emit("LOAD_CONST", const_idx)
300
+ if opcode == "LOAD_NAME":
301
+ # Legacy builder pushed raw identifiers instead of constant indices
302
+ return self.emit("LOAD_NAME", operand)
303
+ if opcode == "STORE_NAME":
304
+ return self.emit("STORE_NAME", operand)
305
+ return self.emit(opcode, operand)
306
+
259
307
  const_idx = self.bytecode.add_constant(value)
260
308
  return self.emit("LOAD_CONST", const_idx)
261
309
 
@@ -317,14 +365,14 @@ class BytecodeBuilder:
317
365
  """Emit MERKLE_ROOT - expects leaf_count items on stack"""
318
366
  return self.emit("MERKLE_ROOT", leaf_count)
319
367
 
320
- def emit_state_read(self, key: str) -> int:
368
+ def emit_state_read(self, key: Any) -> int:
321
369
  """Emit STATE_READ instruction"""
322
- key_idx = self.bytecode.add_constant(key)
370
+ key_idx = key if isinstance(key, int) else self.bytecode.add_constant(key)
323
371
  return self.emit("STATE_READ", key_idx)
324
372
 
325
- def emit_state_write(self, key: str) -> int:
373
+ def emit_state_write(self, key: Any) -> int:
326
374
  """Emit STATE_WRITE instruction - expects value on stack"""
327
- key_idx = self.bytecode.add_constant(key)
375
+ key_idx = key if isinstance(key, int) else self.bytecode.add_constant(key)
328
376
  return self.emit("STATE_WRITE", key_idx)
329
377
 
330
378
  def emit_tx_begin(self) -> int:
@@ -126,49 +126,63 @@ class BytecodeConverter:
126
126
  if start >= len(instructions):
127
127
  return None, 0
128
128
 
129
+ def _op_name(op):
130
+ return op.name if hasattr(op, "name") else op
131
+
129
132
  # Pattern 1: Constant arithmetic (LOAD_CONST, LOAD_CONST, BINARY_OP)
130
133
  if start + 2 < len(instructions):
131
134
  inst1, inst2, inst3 = instructions[start:start+3]
132
135
 
133
- if (inst1[0] == Opcode.LOAD_CONST and
134
- inst2[0] == Opcode.LOAD_CONST and
135
- inst3[0] in [Opcode.ADD, Opcode.SUB, Opcode.MUL, Opcode.DIV, Opcode.MOD, Opcode.POW]):
136
+ op1 = _op_name(inst1[0])
137
+ op2 = _op_name(inst2[0])
138
+ op3 = _op_name(inst3[0])
139
+ if (op1 == Opcode.LOAD_CONST.name and
140
+ op2 == Opcode.LOAD_CONST.name and
141
+ op3 in [Opcode.ADD.name, Opcode.SUB.name, Opcode.MUL.name, Opcode.DIV.name, Opcode.MOD.name, Opcode.POW.name]):
136
142
 
137
143
  return {
138
144
  'type': 'const_binary_op',
139
145
  'const1': inst1[1],
140
146
  'const2': inst2[1],
141
- 'operation': inst3[0],
147
+ 'operation': Opcode[op3],
142
148
  }, 3
143
149
 
144
150
  # Pattern 2: Variable arithmetic (LOAD_NAME, LOAD_CONST, BINARY_OP)
145
151
  if start + 2 < len(instructions):
146
152
  inst1, inst2, inst3 = instructions[start:start+3]
147
153
 
148
- if (inst1[0] == Opcode.LOAD_NAME and
149
- inst2[0] == Opcode.LOAD_CONST and
150
- inst3[0] in [Opcode.ADD, Opcode.SUB, Opcode.MUL, Opcode.DIV]):
154
+ op1 = _op_name(inst1[0])
155
+ op2 = _op_name(inst2[0])
156
+ op3 = _op_name(inst3[0])
157
+ if (op1 == Opcode.LOAD_NAME.name and
158
+ op2 == Opcode.LOAD_CONST.name and
159
+ op3 in [Opcode.ADD.name, Opcode.SUB.name, Opcode.MUL.name, Opcode.DIV.name,
160
+ Opcode.MOD.name, Opcode.POW.name]):
151
161
 
152
162
  return {
153
163
  'type': 'var_const_binary_op',
154
164
  'var_name': inst1[1],
155
165
  'const': inst2[1],
156
- 'operation': inst3[0],
166
+ 'operation': Opcode[op3],
157
167
  }, 3
158
168
 
159
169
  # Pattern 3: Two variables (LOAD_NAME x, LOAD_NAME y, BINARY_OP)
160
170
  if start + 2 < len(instructions):
161
171
  inst1, inst2, inst3 = instructions[start:start+3]
162
172
 
163
- if (inst1[0] == Opcode.LOAD_NAME and
164
- inst2[0] == Opcode.LOAD_NAME and
165
- inst3[0] in [Opcode.ADD, Opcode.SUB, Opcode.MUL, Opcode.DIV]):
173
+ op1 = _op_name(inst1[0])
174
+ op2 = _op_name(inst2[0])
175
+ op3 = _op_name(inst3[0])
176
+ if (op1 == Opcode.LOAD_NAME.name and
177
+ op2 == Opcode.LOAD_NAME.name and
178
+ op3 in [Opcode.ADD.name, Opcode.SUB.name, Opcode.MUL.name, Opcode.DIV.name,
179
+ Opcode.MOD.name, Opcode.POW.name]):
166
180
 
167
181
  return {
168
182
  'type': 'var_var_binary_op',
169
183
  'var1': inst1[1],
170
184
  'var2': inst2[1],
171
- 'operation': inst3[0],
185
+ 'operation': Opcode[op3],
172
186
  }, 3
173
187
 
174
188
  # Pattern 4: Store result (... STORE_NAME)