
Solleva i loop binari x86-64 in vincoli SMT in forma chiusa tramite analisi a intervalli strided, consentendo l'esecuzione simbolica O(1) e il recupero delle chiavi dei crackme.
Motore ad alte prestazioni per il sollevamento algebrico dei cicli e per ricorrenze razionali esatte per Python e C
I compilatori, i runtime e i motori JIT tradizionali (come GCC, Clang, PyPy o Numba) trattano i cicli come sequenze ripetitive di flusso di controllo, eseguendo le istruzioni passo dopo passo:
$$ \text{Runtime Cost} = \mathcal{O}(N) $$
Quando $N = 10^6$ o $10^9$, l'esecuzione sequenziale comporta miliardi di cicli di CPU. Strilight riprogetta radicalmente l'esecuzione dei cicli attraverso il sollevamento algebrico simbolico:
$$ \vec{\mathbf{X}}(N) = \mathbf{A}^N \cdot \vec{\mathbf{X}}0 + \sum{k=0}^{N-1} \mathbf{A}^{N-1-k} \vec{\mathbf{B}} $$
Strilight non pretende di introdurre magie esoteriche; è fondamentalmente uno strumento per migliorare la qualità della vita dello sviluppatore.
Nella modellazione fisica, nel calcolo scientifico e nella simulazione numerica, gli ingegneri affrontano spesso un dilemma frustrante:
Strilight risolve questo dilemma. Scrivi il concetto fisico o matematico con la sintassi diretta e naturale che preferisci. Strilight ispeziona la struttura del tuo ciclo, deriva le formule di ricorrenza esatte in forma chiusa e accelera l'esecuzione dietro le quinte, preservando la completa leggibilità e semplicità del tuo codice.
L'aritmetica in virgola mobile introduce errori cumulativi di troncamento ($1/3 \times 3 \approx 0.9999999999999999$). Strilight esegue l'induzione affine e l'analisi degli incrementi sul campo dei numeri razionali $\mathbb{Q}$:
Fraction esatte in Python, garantendo una parità matematica bit per bit al 100%.Le variabili che dipendono reciprocamente l'una dall'altra (ad esempio, simulazioni fisiche in cui la posizione dipende dalla velocità e la velocità dipende dall'accelerazione) vengono estratte automaticamente in una matrice di accoppiamento delle variabili ($\mathbf{A}$). Strilight esegue l'esponenziazione binaria su $\mathbf{A}$, eseguendo milioni di iterazioni in meno di 2 nanosecondi.
@accelerate (Come funziona)Decorare qualsiasi funzione Python standard con @accelerate esegue una pipeline automatizzata al momento della definizione della funzione (zero overhead di analisi runtime per chiamata):
for ed estrae le variabili di induzione.Fraction, math) senza inquinare i namespace del modulo._loop_summary e _invariant_contract all'oggetto funzione compilato, consentendo ai compilatori e agli strumenti di verifica a valle di ispezionare la matrice di transizione sottostante $\mathbf{A}$.from strilight import accelerate
@accelerate
def compute_simulation(steps: int) -> int:
acc = 0
for i in range(steps):
acc += (i * 3) + 7
return acc
# Executes in O(1) time (~0.001 ms even if steps = 100,000,000)
result = compute_simulation(100_000_000)
#pragma strilight)A differenza della riflessione dinamica di Python, le trasformazioni del codice C in Strilight seguono rigorosamente un Modello a Contratto dello Sviluppatore esplicito tramite direttive pragma in stile OpenMP. Il motore non modifica mai implicitamente il codice sorgente C; le trasformazioni avvengono esclusivamente quando sono dirette da clausole contrattuali esplicite dello sviluppatore (contract, target, include, model):
#pragma strilight accelerate: autorizza esplicitamente Strilight a sollevare il ciclo for C annotato in un'espressione matematica equivalente in forma chiusa.#pragma strilight fuse: direttiva esplicita dello sviluppatore che istruisce Strilight a fondere cicli adiacenti designati che condividono domini di iterazione identici in un kernel ricorrente a matrice binaria unificato $\mathcal{O}(\log N)$.// Example of contract-guided multi-loop fusion via developer directive
int simulate_motion(int n) {
int pos = 0, vel = 10;
#pragma strilight fuse
for (int i = 0; i < n; i++) {
pos += vel;
}
for (int i = 0; i < n; i++) {
vel += 2;
}
return pos;
}
CrossFileResolver)Le simulazioni numeriche definiscono spesso parametri in file di intestazione separati o moduli di configurazione. Il CrossFileResolver di Strilight:
#include / #define.SOLAR_MASS = 4 * PI * PI) tra file tramite valutazione AST senza eseguire codice runtime arbitrario né utilizzare eval non sicuro.table[i % P]) in formule chiuse con somma prefissa precalcolata in $\mathcal{O}(1)$.memset o assegnazioni di slice vettoriali (arr[:N] = ...).