Added on-demand object code compilation and loader

This commit is contained in:
Mark Qvist
2025-02-23 14:45:24 +01:00
parent e8f2bd9b0c
commit 5fcdd17665
5 changed files with 34 additions and 2 deletions

26
CRNS/__init__.py Normal file
View File

@@ -0,0 +1,26 @@
compiling = False
noticed = False
notice_delay = 0.3
import time
import sys
import threading
from importlib.util import find_spec
if find_spec("pyximport") and find_spec("cython"):
import pyximport; pyxloader = pyximport.install(pyimport=True, language_level=3)[1]
def notice_job():
global noticed
started = time.time()
while compiling:
if time.time() > started+notice_delay and compiling:
noticed = True
print("Compiling Reticulum object code... ", end="")
sys.stdout.flush()
break
time.sleep(0.1)
compiling = True
threading.Thread(target=notice_job, daemon=True).start()
import RNS; compiling = False
if noticed: print("Done."); sys.stdout.flush()