
Convertit les boucles de binaires x86-64 en contraintes SMT de forme fermée via une analyse par intervalles stridés, permettant une exécution symbolique en O(1) et la récupération de clés de crackme.
Moteur de levée de boucles algébriques haute performance et de récurrences rationnelles exactes pour Python et C
Les compilateurs, environnements d'exécution et moteurs JIT traditionnels (tels que GCC, Clang, PyPy ou Numba) traitent les boucles comme des séquences répétitives de flux de contrôle, exécutant les instructions pas à pas :
$$ \text{Coût d'exécution} = \mathcal{O}(N) $$
Lorsque $N = 10^6$ ou $10^9$, l'exécution séquentielle engendre des milliards de cycles CPU. Strilight réingénierie fondamentalement l'exécution des boucles grâce à la levée algébrique symbolique :
$$ \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 ne prétend pas introduire de magie ésotérique ; c'est fondamentalement un outil de qualité de vie pour le développeur.
En modélisation physique, en calcul scientifique et en simulation numérique, les ingénieurs sont fréquemment confrontés à un dilemme frustrant :
Strilight résout ce dilemme. Vous écrivez le concept physique ou mathématique dans la syntaxe simple et naturelle que vous préférez. Strilight inspecte la structure de votre boucle, dérive les formules de récurrence exactes sous forme fermée et accélère l'exécution en coulisses — tout en préservant une lisibilité et une simplicité totales dans votre base de code.
L'arithmétique en virgule flottante introduit des erreurs de troncature cumulatives ($1/3 \times 3 \approx 0.9999999999999999$). Strilight effectue l'induction affine et l'analyse des pas sur le corps des nombres rationnels $\mathbb{Q}$ :
Fraction exactes en Python, garantissant une parité mathématique 100 % exacte au bit près.Les variables qui dépendent mutuellement les unes des autres (par exemple, des simulations physiques où la position dépend de la vitesse et la vitesse dépend de l'accélération) sont automatiquement extraites dans une matrice de couplage de variables ($\mathbf{A}$). Strilight effectue une exponentiation binaire sur $\mathbf{A}$, exécutant des millions d'itérations en moins de 2 nanosecondes.
@accelerate (Fonctionnement)Décorer n'importe quelle fonction Python standard avec @accelerate exécute un pipeline automatisé au moment de la définition de la fonction (aucune surcharge d'analyse à l'exécution par appel) :
for et extrait les variables d'induction.Fraction, math) sans polluer les espaces de noms du module._loop_summary et _invariant_contract à l'objet fonction compilé, permettant aux compilateurs et outils de vérification en aval d'inspecter la matrice de transition sous-jacente $\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)Contrairement à la réflexion dynamique de Python, les transformations de code C dans Strilight suivent strictement un modèle de contrat développeur explicite via des directives pragma de style OpenMP. Le moteur ne modifie jamais implicitement le code source C ; les transformations n'ont lieu que lorsqu'elles sont dirigées par des clauses de contrat développeur explicites (contract, target, include, model) :
#pragma strilight accelerate : autorise explicitement Strilight à élever la boucle for C annotée en une expression mathématique équivalente de forme fermée.#pragma strilight fuse : directive développeur explicite demandant à Strilight de fusionner des boucles adjacentes désignées partageant des domaines d'itération identiques en un noyau de récurrence matricielle binaire unifié en $\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)Les simulations numériques définissent fréquemment des paramètres dans des fichiers d'en-tête ou des modules de configuration séparés. Le CrossFileResolver de Strilight :
#include / #define.SOLAR_MASS = 4 * PI * PI) à travers les fichiers via l'évaluation AST, sans exécuter de code arbitraire à l'exécution ni utiliser de eval non sécurisé.table[i % P]) en formules fermées de sommes préfixes précalculées en $\mathcal{O}(1)$.memset ou des affectations vectorielles de tranches (arr[:N] = ...).