Rust in PHP
Gezien dat PHP code niet te compileren is (ja, versie 5 met Zend Guard, maar daar heb ik weinig aan) was mijn eerste idee om het programma dan maar zelf om te schrijven naar C. Dat zou moeten kunnen omdat PHP zelf in C geschreven is en extensies vaak wrappers zijn van C libraries. Nadat ik mijzelf opnieuw verdiept heb in C (ik heb daar eerder al mee gewerkt), ben ik afgelopen week van spoor gewisseld.
Ik heb het handboek van Rust gelezen. Ik had al eerder naar Rust gekeken maar vond toen het gebrek aan kwalitatieve crates een issue. Maar als ik dat nu afzet tegen alle voordelen ten opzichte van C, wint Rust. En het smaakt naar meer. Maar de applicatie is vooralsnog in PHP. Voor een geleidelijke transitie zin ik op deze vraag:
Welke manieren zijn te bedenken om Rust en PHP te laten samenwerken?
Een optie die ik gevonden heb is om met Rust een library te maken die met FFI te gebruiken is:
https://platform.sh/blog/2020/php-fun-with-ffi-getting-rust-ic/
De conclusie van het artikel is dat het weinig triviaal is en dat het weinig voordeel zou bieden.
Een ander idee is om naar wasm te compileren en de client code te laten samenwerken met PHP. Dat is leuk voor later, maar in de kern gaat het om de code aan de achterkant, die op de server draait, waar de relevante logica zit.
Misschien zijn er nog meer mogelijkheden?
Toch denk ik niet dat het een serieus alternatief is, omdat de laatste versie 10 jaar oud is en alleen PHP 5 ondersteunt net als Zend Guard. Ik heb eerder op dit forum andere mogelijkheden onderzocht voor PHP en kwam uit op een tools als ionCube. Maar ik ben niet overdreven blij met de richting waarin PHP drijft met versie 8. Omdat ik al lang (20 jaar) met PHP werk sta ik open voor een nieuwe taal als Rust.
Hoewel het gras bij een ander altijd groener is, en aangezien Rust alle voordelen van C heeft en veiliger is, en compileert naar WebAssembly, is het toekomstbestendiger en kan ik op termijn met 1 taal zowel PHP als JavaScript vervangen. (Ik heb ook nooit echt warme gevoelens gehad voor JavaScript)
Vanuit Rust heb ik meerdere manieren gevonden om te integreren met PHP, zoals php-rs om een eigen extensie te maken. Of via fastcgi of met een eigen webserver als hyper. Non-blocking I/O is ook geen probleem met tokio. (PHP heeft daarvoor amphp.)
Ik geloof dat ik hiermee mijn eigen vraag heb beantwoord... maar als iemand nog iets kan toevoegen: graag!