Ο vk6_ (γνωστός και ως ading2210/Allen), κατάφερε να κάνει κάτι πολύ αξιοσημείωτο. Κατάφερε να τρέξει το Linux μέσα σε ένα αρχείο PDF από ένα πρόγραμμα περιήγησης.Το PDF λειτουργεί μόνο σε προγράμματα περιήγησης που βασίζονται στο Chromium.
Βασιζόμενος σε ένα παλαιότερο project που έτρεχε το Doom σε ένα αρχείο PDF, ο προγραμματιστής κυκλοφόρησε το LinuxPDF, το οποίο τροφοδοτείται από μια τροποποιημένη έκδοση του εξομοιωτή TinyEMU RISC-V που έχει μεταγλωττιστεί σε asm.js χρησιμοποιώντας μια παλαιότερη έκδοση του Emscripten.
Αξιοποιώντας την υποστήριξη JavaScript της μορφής PDF, επέτρεψε στο Linux να τρέχει εντός του εγγράφου, χρησιμοποιώντας μια περιορισμένη αλλά λειτουργική υποστήριξη JavaScript που είναι διαθέσιμη σε προγράμματα περιήγησης που βασίζονται στο Chromium.
Στην τρέχουσα κατάστασή του, οι χρήστες μπορούν να χρησιμοποιήσουν το εικονικό πληκτρολόγιο για να αλληλεπιδράσουν με το LinuxPDF, να τρέξουν εντολές χρησιμοποιώντας το πλαίσιο κειμένου.
Ο vk6_ ορίζει την εσωτερική λειτουργία του LinuxPDF ως εξής:
Ο κώδικας C μπορεί να μεταγλωττιστεί για να εκτελεστεί σε ένα PDF χρησιμοποιώντας μια παλιά έκδοση του Emscripten που στοχεύει το asm.js αντί για το WebAssembly. Με αυτό, μπόρεσα να μεταγλωττίσω μια τροποποιημένη έκδοση του εξομοιωτή TinyEMU RISC-V στο asm.js, η οποία μπορεί να εκτελεστεί στο PDF. Για την είσοδο και την έξοδο, χρησιμοποίησα ξανά τον ίδιο κώδικα οθόνης που χρησιμοποίησα για το DoomPDF.
Λειτουργεί χρησιμοποιώντας ένα ξεχωριστό πεδίο κειμένου για κάθε σειρά pixel στην οθόνη, τα περιεχόμενα του οποίου έχουν οριστεί με διάφορους χαρακτήρες ASCII. Για τους εισόδους, υπάρχει ένα εικονικό πληκτρολόγιο που υλοποιείται με μια δέσμη κουμπιών και ένα πλαίσιο κειμένου που μπορείτε να πληκτρολογήσετε για να στείλετε πληκτρολογήσεις.
Θέλετε να το δοκιμάσετε;
Για μια γρήγορη δοκιμαστική έκδοση, μπορείτε να επισκεφτείτε τον επίσημο ιστότοπο που φιλοξενεί ένα live demo. Λειτουργεί μόνο σε προγράμματα περιήγησης που βασίζονται στο Chromium. Εάν θέλετε να το δημιουργήσετε από την πηγή, τότε θα πρέπει να επισκεφτείτε το GitHub.