Scheme2Js

Screenshot Λογισμικό:
Scheme2Js
Στοιχεία Λογισμικού:
Εκδοχή: 20101114
Ανεβάστε ημερομηνία: 11 May 15
Προγραμματιστής: Florian Loitsch
Άδεια: Δωρεάν
Δημοτικότητα: 6

Rating: nan/5 (Total Votes: 0)

Scheme2Js είναι ένα πρόγραμμα για την Javascript compiler. Ενώ κάποια προσπάθεια έχει δαπανηθεί για να είναι όσο το δυνατόν πιο κοντά στο R5RS, επικεντρωθήκαμε κυρίως στην αποδοτικότητα.
Συνήθως Scheme2Js παράγει κώδικα Javascript, ότι είναι συγκρίσιμη με ιδιόχειρες κώδικα. Για να επιτύχουν την απόδοση αυτή, Scheme2Js δεν είναι εντελώς R5RS συμβατό. Ειδικότερα, στερείται την υποστήριξη για τις συνέχειες, ακριβείς αριθμούς και αντιμετωπίζει αναδρομή ουρά μόνο εν μέρει.
Scheme2Js παρέχει διάφορες σημαίες, που επιτρέπουν να τροποποιήσετε το αποτέλεσμα:
ย ท --no-JS-dot-συμβολισμός δεν επιτρέπει την πρόσβαση στα χωράφια το JavaScript με το dot-σημειογραφία. Αυτή η σημαία απενεργοποιεί προσβάσεις της μορφής xy όπως στην document.getElementById. Είναι ωστόσο ακόμη δυνατό να έχουν πρόσβαση στο είναι μια έγκυρη έκφραση, χρησιμοποιώντας τη λειτουργία JS-πεδίο.
ย ท --mutable-strings: προκειμένου να βελτιωθούν οι επιδόσεις των χορδών επιχειρήσεων και να διευκολυνθεί η διασύνδεση μεταξύ του συστήματος και JavaScript κώδικα, η προεπιλεγμένη εφαρμογή Σχεδίου χάρτες χορδές για να χορδές το JavaScript. Σε αντίθεση με το Σχήμα χορδές, χορδές το JavaScript είναι, ωστόσο, αμετάβλητος. Αυτή χορδές χάρτες σημαία σε μια τάξη το JavaScript, που αντιπροσωπεύει Σχέδιο χορδές, που είναι ευμετάβλητος. Η προκύπτουσα κώδικας θα μπορούσε να είναι ελαφρώς πιο αργή, και είναι πιο δύσκολο να διασυνδεθούν με κώδικα Javascript.
ย ท --encapsulate-μέρη συμπυκνώνει το πρόγραμμα σε ανώνυμη λειτουργία. Μόνο οι καθολικές μεταβλητές βρίσκονται έξω από αυτό ανώνυμη συνάρτηση. Από τη μία πλευρά αυτό εισάγει μία κλήση της συνάρτησης στην ανώνυμη λειτουργία. Αλλά από την άλλη πλευρά, οι περισσότερες εφαρμογές Javascript πρέπει να τρέξει πιο γρήγορα με αυτή τη βελτιστοποίηση: συνήθως hashtables χρησιμοποιούνται για να αντιπροσωπεύουν πεδία σε JavaScript. Με τη χρήση ενός ανώνυμου λειτουργία των προγραμμάτων είναι οι μεταβλητές χωρίζονται σε δικές τους μικρότερες Hashtable που (θεωρητικά) επιταχύνει πρόσβαση σε αυτές τις μεταβλητές. Πιο σημαντικό είναι οι μεταβλητές αποθηκεύονται στη δική τους Hashtable, και όχι στην παγκόσμια Hashtable, η οποία είναι προσβάσιμη από την παγκόσμια μεταβλητή. Είναι εξαιρετικά εύκολο να τροποποιήσουν έμμεσα τα περιεχόμενα των παγκόσμιων μεταβλητών. Εσωτερική επένδυση που ή άλλες κοινές βελτιστοποιήσεις είναι επομένως αδύνατον να γίνει σε καθολικές μεταβλητές. Με την αποθήκευση των μεταβλητών του προγράμματος σε μια ανώνυμη συνάρτηση αυτές οι βελτιστοποιήσεις γίνει και πάλι δυνατή.
ย ท --optimize-var-αριθμός μειώνει τον αριθμό των μεταβλητών που χρησιμοποιούνται στην προκύπτουσα κώδικα JavaScript. Ο κωδικός μπορεί να τρέξει πιο γρήγορα, αλλά είναι πιο δύσκολο για τον εντοπισμό σφαλμάτων, καθώς τα ονόματα των μεταβλητών χάσει και η ίδια μεταβλητή μπορεί να χρησιμοποιηθεί πολλές φορές.
ย ท --optimize-λίγο: με αυτό Scheme2Js σημαία βελτιστοποιεί την κοινή while loops. Η unoptimized while loops είναι συχνά με τη μορφή:
 ενώ η (πραγματική) {
   αν (δοκιμή)
     resVar = res?
   else {
     modify_loop_variable?
     να συνεχίσει?
   }
   σπάσει?
 }
 
Αυτή η βελτιστοποίηση αναζητά αυτά τα σχέδια και να μετακινεί το τεστ στο βρόχο while:
 ενώ (δοκιμή!) {
   modify_loop_variable?
 }
 resVar = res?
 
Αυτή η βελτιστοποίηση έχει υλοποιηθεί μόλις πρόσφατα και, συνεπώς, δεν έχει ακόμη ενεργοποιηθεί από προεπιλογή.
ย ท --verbose τυπώνει κάποιες πληροφορίες.
ย ท --no-εσωτερική επένδυση που απενεργοποιεί όλες εσωτερική επένδυση που λειτουργίας (σταθερές μπορεί να είναι ακόμα inlined).
ย ท --inline-διεθνοποιημένων επιτρέπει Scheme2Js inline παγκόσμιες λειτουργίες και σταθερές. Αυτό θα μπορούσε να έχει δύο ανεπιθύμητες παρενέργειες: για ένα, καθολικές μεταβλητές χρησιμοποιούνται συχνά για τη μεταφορά δεδομένων μεταξύ των διαφόρων μονάδων. Ορισμένες inlined λειτουργίες χαθεί αν δεν υπάρχει καμία αναφορά σε αυτούς πια. Αν η παγκόσμια λειτουργίες πρόκειται να χρησιμοποιηθούν εκτός της μονάδας, δεν θα πρέπει να χρησιμοποιούν αυτήν τη σημαία. (Αυτή η συμπεριφορά είναι πιθανό να αλλάξει σε μελλοντικές εκδόσεις του Scheme2Js.)
ย ท --unresolved-είναι-JS: αν μια μεταβλητή είναι αδέσμευτο, ο compiler θα υποθέσουμε ότι η μεταβλητή προέρχεται από άλλη μονάδα, ή από το JavaScript. Δείτε την Ενότητα Σχέδιο - Javascript για μια πιο λεπτομερή συζήτηση της διασύνδεσης το JavaScript Σχέδιο.
ย ท --js-αυτό παρέχει την εν λόγω μεταβλητή, μέσα σε συναρτήσεις Σχέδιο. Με αυτό τον τρόπο, οι διαδικασίες Σχήμα μπορεί να χρησιμοποιηθεί ως μέθοδοι JavaScript αντικειμένων.
ย ท --no-tailrec απενεργοποιεί την tailrec σε ενώ-βρόχο βελτιστοποίησης. Αν υποψιάζεστε ότι υπάρχει σφάλμα στο δρόμο του μεταγλωττιστή της μετάφρασης ουρά ΣΑ, θα μπορούσατε να δοκιμάσετε αυτήν τη σημαία.
ย ท --no-βελτιστοποίηση-κλήσεις απενεργοποιεί Scheme2Js εσωτερική επένδυση που διμερών ή μοναδιαίος πράξεις. Για παράδειγμα sci_plus (3, 5) έχει βελτιστοποιηθεί για (3 + 5). Αυτή η βελτιστοποίηση είναι πολύ σημαντικό, και είναι συνήθως δεν υπάρχει λόγος να το απενεργοποιήσετε.
ย ท --no-βελτιστοποίηση-consts απενεργοποιεί την προ-συνεχή υπολογισμό. Εκτός άτομα με ειδικές ανάγκες (με αυτή τη σημαία), είναι ένωση σταθερές προϋπολογισμένη και περιστατικών τους, αντικαθίσταται από αναφορά σε μια μεταβλητή κρατώντας τη σταθερά. Αυτό κάνει επανειλημμένες πρόσβαση σε αυτές τις σταθερές γρηγορότερα, αλλά εισάγει νέες μεταβλητές.
ย ท --no-βελτιστοποίηση-boolify απενεργοποιεί την boolify βελτιστοποίησης. Της Javascript και boolify Σχεδίου δεν είναι ισοδύναμες: το JavaScript θεωρεί ψευδή, 0, άκυρη και απροσδιόριστες να είναι ψευδής, ενώ Σχέδιο έχει #F μόνο. Κατά συνέπεια, η μη βελτιστοποιημένη boolify προσθέτει πάντα το τεστ κατά λάθος: αν (δοκιμή == false!) ... Αν Scheme2Js μπορεί να δει, ότι η ίδια η δοκιμή είναι μια Boolean, μπορεί να αφαιρέσει το περιττό == false τεστ!. Αυτή η σημαία απενεργοποιεί αυτή τη βελτιστοποίηση.
ย ท --d STAGE εκτυπώνει μια τελεία-αρχείο (βλ GraphViz) της AST μετά το στάδιο στάδιο. Πιθανά στάδια είναι: expand, δέντρο, σύμβολο, ο κόμβος-elim1, ουρά, inline, σταθερή-διάδοσης, RM-αχρησιμοποίητο-Βαρ, τη σύλληψη, ο κόμβος-elim2, ενώ, (TT "δηλώσεις"), ο κόμβος-elim3. Συνήθως κάποιος δεν χρειάζεται τη σημαία αυτή, παρά μόνο για σκοπούς εντοπισμού σφαλμάτων.
ย ท --print-locs εκτυπώσεις τις αρχικές θέσεις και τα σχόλια στο αρχείο JavaScript. Αυτές οι θέσεις είναι σήμερα ο χαρακτήρας-μετατόπιση από την αρχή του αρχείου

Τι είναι καινούργιο σε αυτή την έκδοση:.

  • Μικρά Οι αλλαγές και διορθώσεις έχουν μεταφερθεί από Hop να Scheme2Js.

Τι είναι καινούργιο στην έκδοση 20100816:.

  • runtime-αναγνώστη Scheme2Js «αναγνωρίζει πλέον λέξεις-κλειδιά
  • Πολλά σφάλματα που έχουν διορθωθεί.

Τι είναι καινούργιο στην έκδοση 20081219:.

  • Ο compiler έχει βελτιστοποιηθεί
  • Είναι πλέον πολύ πιο γρήγορα και καταναλώνει λιγότερη μνήμη.
  • Πολλά σφάλματα έχουν καθοριστεί.
  • Η ρήτρα προεπιλεγμένη μονάδα του Scheme2Js τώρα είναι παρόμοια με εκείνη του Bigloo.
  • Αυτή η έκδοση υποστηρίζει κατάλληλα ονόματα.

Παρόμοια λογισμικά

phc
phc

3 Jun 15

Project Fortress
Project Fortress

2 Jun 15

Vala
Vala

27 Sep 15

ScummVM
ScummVM

17 Feb 15

Σχόλια για Scheme2Js

Τα σχόλια δεν βρέθηκε
προσθήκη σχολίου
Ενεργοποιήστε τις εικόνες!