ruby — Διερμηνευόμενη, αντικειμενοστρεφής γλώσσα σεναρίων
ΣΥΝΟΨΗ
ruby [--copyright] [--version] [-SUacdlnpswvy] [-0[octal]] [-C directory]
[-E external[:internal]] [-F[pattern]] [-I directory] [-K[c]] [-T[level]] [-W[level]]
[-e command] [-i[extension]] [-r library] [-x[directory]] [--{enable|disable}-FEATURE]
[--dump=target] [--verbose] [--crash-report=template] [--] [program_file] [argument ...]
ΠΕΡΙΓΡΑΦΗ
Η Ruby είναι μια διερμηνευόμενη γλώσσα σεναρίων για γρήγορο και εύκολο αντικειμενοστρεφή προγραμματισμό. Έχει πολλά χαρακτηριστικά για την επεξεργασία αρχείων κειμένου και για την εκτέλεση εργασιών διαχείρισης συστήματος (όπως στην Perl). Είναι απλή, ευθεία και επεκτάσιμη.
Εάν θέλετε μια γλώσσα για εύκολο αντικειμενοστρεφή προγραμματισμό, ή δεν σας αρέσει η ασχήμια της Perl, ή σας αρέσει η ιδέα της LISP, αλλά δεν σας αρέσουν οι πολλές παρενθέσεις, η Ruby μπορεί να είναι η γλώσσα της επιλογής σας.
ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ
Τα χαρακτηριστικά της Ruby είναι τα εξής:
Διερμηνευόμενη Η Ruby είναι μια διερμηνευόμενη γλώσσα, επομένως δεν χρειάζεται να επαναμεταγλωττίσετε προγράμματα γραμμένα σε Ruby για να τα εκτελέσετε.
Οι μεταβλητές δεν έχουν τύπο (δυναμική τυποποίηση) Οι μεταβλητές στην Ruby μπορούν να περιέχουν δεδομένα οποιουδήποτε τύπου. Δεν χρειάζεται να ανησυχείτε για την τυποποίηση των μεταβλητών. Ως εκ τούτου, έχει ασθενέστερο έλεγχο κατά τη μεταγλώττιση.
Δεν απαιτείται δήλωση Μπορείτε να χρησιμοποιήσετε μεταβλητές στα προγράμματα Ruby χωρίς καμία δήλωση. Τα ονόματα των μεταβλητών υποδηλώνουν την εμβέλειά τους - καθολική, κλάσης, στιγμιότυπου ή τοπική.
Απλή σύνταξη Η Ruby έχει μια απλή σύνταξη, ελαφρώς επηρεασμένη από την Eiffel.
Καμία διαχείριση μνήμης σε επίπεδο χρήστη Η Ruby έχει αυτόματη διαχείριση μνήμης. Τα αντικείμενα που δεν αναφέρονται πλέον από οπουδήποτε συλλέγονται αυτόματα από τον συλλέκτη σκουπιδιών που είναι ενσωματωμένος στον διερμηνέα.
Όλα είναι αντικείμενα Η Ruby είναι μια καθαρά αντικειμενοστρεφής γλώσσα και ήταν έτσι από την αρχή της. Ακόμη και τέτοια βασικά δεδομένα όπως οι ακέραιοι αριθμοί θεωρούνται αντικείμενα.
Κλάσεις, κληρονομικότητα και μέθοδοι Ως αντικειμενοστρεφής γλώσσα, η Ruby έχει φυσικά βασικά χαρακτηριστικά όπως κλάσεις, κληρονομικότητα και μεθόδους.
Μέθοδοι singleton Η Ruby έχει τη δυνατότητα να ορίζει μεθόδους για συγκεκριμένα αντικείμενα. Για παράδειγμα, μπορείτε να ορίσετε μια ενέργεια "πατήστε το κουμπί" για ένα συγκεκριμένο widget ορίζοντας μια μέθοδο singleton για το κουμπί. Ή, μπορείτε να δημιουργήσετε το δικό σας σύστημα αντικειμένων που βασίζεται σε πρωτότυπα χρησιμοποιώντας μεθόδους singleton, αν θέλετε.
Ανάμειξη με τη χρήση modules Η Ruby δεν έχει σκόπιμα την πολλαπλή κληρονομικότητα, καθώς είναι μια πηγή σύγχυσης. Αντίθετα, η Ruby έχει τη δυνατότητα να μοιράζεται υλοποιήσεις σε ολόκληρο το δέντρο κληρονομικότητας. Αυτό συχνά ονομάζεται "ανάμειξη".
Επαναλήπτες Η Ruby έχει επαναλήπτες για αφαίρεση βρόχου.
Κλεισίματα Στη Ruby, μπορείτε να αντικειμενοποιήσετε τη διαδικασία.
Επεξεργασία κειμένου και κανονικές εκφράσεις Η Ruby διαθέτει πολλές δυνατότητες επεξεργασίας κειμένου όπως και η Perl.
M17N, ανεξάρτητο από το σύνολο χαρακτήρων
Η Ruby υποστηρίζει πολυγλωσσικό προγραμματισμό. Είναι εύκολο να επεξεργαστείτε κείμενα γραμμένα σε πολλές διαφορετικές φυσικές γλώσσες και κωδικοποιημένα σε πολλά διαφορετικά σύνολα χαρακτήρων, χωρίς εξάρτηση από το Unicode.
Μεγάλοι αριθμοί Με τους ενσωματωμένους μεγάλους αριθμούς, μπορείτε για παράδειγμα να υπολογίσετε το παραγοντικό του 400.
Αναστοχασμός και γλωσσές ειδικού τομέα Η κλάση είναι επίσης μια παρουσία της κλάσης Class. Ο ορισμός κλάσεων και μεθόδων είναι μια έκφραση, όπως και το 1+1. Έτσι, τα προγράμματά σας μπορούν ακόμη και να γράφουν και να τροποποιούν προγράμματα. Επομένως, μπορείτε να γράψετε την εφαρμογή σας σε μια δική σας γλώσσα προγραμματισμού πάνω από τη Ruby.
Διαχείριση εξαιρέσεων Όπως στην Java(tm).
Άμεση πρόσβαση στο λειτουργικό σύστημα Η Ruby μπορεί να χρησιμοποιήσει τις περισσότερες κλήσεις συστήματος Unix, οι οποίες χρησιμοποιούνται συχνά στον προγραμματισμό συστημάτων.
Δυναμική φόρτωση Στα περισσότερα συστήματα Unix, μπορείτε να φορτώσετε αρχεία αντικειμένων στον διερμηνέα Ruby δυναμικά.
Πλούσιες βιβλιοθήκες Επιπλέον των "ενσωματωμένων βιβλιοθηκών" και των "τυπικών βιβλιοθηκών" που περιλαμβάνονται στην Ruby, υπάρχει ένας τεράστιος αριθμός βιβλιοθηκών τρίτων ( "gems") που είναι διαθέσιμες μέσω του συστήματος διαχείρισης πακέτων που ονομάζεται "RubyGems", συγκεκριμένα η εντολή gem(1). Επισκεφτείτε το RubyGems.org (https://rubygems.org/) για να βρείτε τα gems που χρειάζεστε και εξερευνήστε το GitHub (https://github.com/) για να δείτε πώς αναπτύσσονται και χρησιμοποιούνται.
ΕΠΙΛΟΓΕΣ
Ο διερμηνέας Ruby δέχεται τις ακόλουθες επιλογές γραμμής εντολών (διακόπτες). Είναι αρκετά παρόμοιες με αυτές της perl(1).
--copyright Εκτυπώνει την ειδοποίηση πνευματικών δικαιωμάτων και τερματίζει αμέσως χωρίς να εκτελέσει κανένα σενάριο.
--version Εκτυπώνει την έκδοση του διερμηνέα Ruby και τερματίζει αμέσως χωρίς να εκτελέσει κανένα σενάριο.
-0[οκτάδα] (Το ψηφίο "μηδέν"). Καθορίζει τον διαχωριστή εγγραφών εισόδου ($/) ως έναν οκταδικό αριθμό. Εάν δεν δοθεί ψηφίο, το μηδενικό χαρακτήρας λαμβάνεται ως ο διαχωριστής. Άλλοι διακόπτες μπορούν να ακολουθήσουν τα ψηφία. Το -00 μετατρέπει την Ruby σε λειτουργία παραγράφου. Το -0777 κάνει την Ruby να διαβάσει ολόκληρο το αρχείο ταυτόχρονα ως μια ενιαία συμβολοσειρά, επειδή δεν υπάρχει κανένας έγκυρος χαρακτήρας με αυτήν την τιμή.
-C κατάλογος
-X κατάλογος Προκαλεί την εναλλαγή της Ruby στον κατάλογο.
-E εξωτερική[:εσωτερική]
--encoding εξωτερική[:εσωτερική]
Καθορίζει την προεπιλεγμένη τιμή(ες) για τις εξωτερικές κωδικοποιήσεις και την εσωτερική κωδικοποίηση. Οι τιμές πρέπει να διαχωρίζονται με άνω και κάτω τελεία (:). Μπορείτε να παραλείψετε αυτήν για τις εσωτερικές κωδικοποιήσεις, οπότε η τιμή (Encoding.default_internal) θα είναι nil.
--external-encoding=κωδικοποίηση
--internal-encoding=κωδικοποίηση
Καθορίστε την προεπιλεγμένη εξωτερική ή εσωτερική κωδικοποίηση χαρακτήρων.
-F μοτίβο Καθορίζει τον διαχωριστή πεδίων εισόδου ($;).
-I κατάλογος Χρησιμοποιείται για να πει στην Ruby πού να φορτώσει τα σενάρια βιβλιοθηκών. Η διαδρομή καταλόγου θα προστεθεί στη μεταβλητή load-path ($:).
-K kcode Καθορίζει την κωδικοποίηση KANJI (Ιαπωνικά). Η προεπιλεγμένη τιμή για τις κωδικοποιήσεις σεναρίου (__ENCODING__) και τις εξωτερικές κωδικοποιήσεις (Encoding.default_external) θα είναι η καθορισμένη. Το kcode μπορεί να είναι ένα από τα ακόλουθα.
e EUC-JP
s Windows-31J (CP932)
u UTF-8
n ASCII-8BIT (BINARY)
-S Κάνει την Ruby να χρησιμοποιεί τη μεταβλητή περιβάλλοντος PATH για να αναζητήσει το σενάριο, εκτός εάν το όνομά του ξεκινά με μια κάθετο. Αυτό χρησιμοποιείται για να μιμηθεί το #! σε μηχανές που δεν το υποστηρίζουν, με τον ακόλουθο τρόπο:
#! /usr/local/bin/ruby
# Αυτή η γραμμή μετατρέπει την επόμενη σε σχόλιο στην Ruby \
exec /usr/local/bin/ruby -S $0 $*
Σε ορισμένα συστήματα, το $0 δεν περιέχει πάντα την πλήρη διαδρομή, επομένως χρειάζεστε τη διακόπτη -S για να ενημερώσετε την Ruby να αναζητήσει το σενάριο εάν είναι απαραίτητο (για να χειριστείτε ενσωματωμένα κενά διαστήματα και ούτω καθεξής). Μια καλύτερη κατασκευή από το $* θα ήταν το ${1+"$@"}, αλλά δεν λειτουργεί εάν το σενάριο εκτελείται από το csh(1).
-T[level=1] Ενεργοποιεί τους ελέγχους "μολυσμένου" (taint) στο καθορισμένο επίπεδο (προεπιλογή 1).
-U Ορίζει την προεπιλεγμένη τιμή για τις εσωτερικές κωδικοποιήσεις (Encoding.default_internal) σε UTF-8.
-W[level=2] Ενεργοποιεί τη διεπεμβατική λειτουργία (verbose mode) στο καθορισμένο επίπεδο χωρίς να εκτυπώνει το μήνυμα έκδοσης στην αρχή. Το επίπεδο μπορεί να είναι:
0 Η διεπεμβατική λειτουργία είναι "σιωπηλή". Ορίζει το $VERBOSE σε nil.
1 Η διεπεμβατική λειτουργία είναι "μέτρια". Ορίζει το $VERBOSE σε false.
2(προεπιλογή) Η διεπεμβατική λειτουργία είναι "λεπτομερής". Ορίζει το $VERBOSE σε true. Το -W2 είναι το ίδιο με το -w.
-a Ενεργοποιεί την αυτόματη λειτουργία διαχωρισμού (auto-split) όταν χρησιμοποιείται με τις διακόπτεις -n ή -p. Στην αυτόματη λειτουργία διαχωρισμού, η Ruby εκτελεί
$F = $_.split
στην αρχή κάθε βρόχου.
--backtrace-limit=num
Περιορίζει το μέγιστο μήκος των ιχνογραφημάτων (backtraces) σε num γραμμές (προεπιλογή -1, που σημαίνει ότι δεν υπάρχει περιορισμός).
-c Προκαλεί την Ruby να ελέγξει τη σύνταξη του σεναρίου και να τερματιστεί χωρίς να το εκτελέσει. Εάν δεν υπάρχουν σφάλματα σύνταξης, η Ruby θα εκτυπώσει "Σύνταξη ΟΚ" στην τυπική έξοδο.
-d
--debug Ενεργοποιεί τη λειτουργία εντοπισμού σφαλμάτων (debug mode). Το $DEBUG θα οριστεί σε true.
-e command Καθορίζει ένα σενάριο από τη γραμμή εντολών, ενώ ταυτόχρονα ενημερώνει την Ruby να μην αναζητήσει τα υπόλοιπα ορίσματα για ένα όνομα αρχείου σεναρίου.
-h
--help Εκτυπώνει μια περίληψη των επιλογών.
-i extension Καθορίζει τη λειτουργία επεξεργασίας επί τόπου. Η επέκταση, εάν καθοριστεί, προστίθεται στο παλιό όνομα αρχείου για να δημιουργηθεί ένα αντίγραφο ασφαλείας. Για παράδειγμα:
% echo matz > /tmp/junk
% cat /tmp/junk
matz
% ruby -p -i.bak -e '$_.upcase!' /tmp/junk
% cat /tmp/junk
MATZ
% cat /tmp/junk.bak
matz
-l (Το μικρό γράμμα "l".) Ενεργοποιεί την αυτόματη επεξεργασία τερματισμού γραμμής, που σημαίνει ότι πρώτα ορίζει το $\ στην τιμή του $/, και στη συνέχεια περικόπτει κάθε γραμμή που διαβάζεται χρησιμοποιώντας το chomp!.
-n Προκαλεί την Ruby να υποθέσει τον ακόλουθο βρόχο γύρω από το σενάριό σας, ο οποίος το επαναλαμβάνει σε ονόματα αρχείων ορισμάτων, κάπως όπως το sed -n ή το awk.
while gets
...
end
-p Λειτουργεί κατά κύριο λόγο όπως η διακόπτης -n, αλλά εκτυπώνει την τιμή της μεταβλητής $_ στο τέλος κάθε επανάληψης του βρόχου. Για παράδειγμα:
% echo matz | ruby -p -e '$_.tr! "a-z", "A-Z"'
MATZ
-r library Προκαλεί την Ruby να φορτώσει τη βιβλιοθήκη χρησιμοποιώντας το require. Είναι χρήσιμο όταν χρησιμοποιείτε τις διακόπτεις -n ή -p.
-s Ενεργοποιεί την ανάλυση ορισμένων διακοπτών για διακόπτες μετά το όνομα του σεναρίου αλλά πριν από τυχόν ορίσματα ονομάτων αρχείων (ή πριν από ένα --). Οποιοιδήποτε διακόπτες που βρεθούν εκεί αφαιρούνται από το ARGV και ο αντίστοιχος μεταβλητός ορίζεται στο σενάριο. Για παράδειγμα:
#! /usr/local/bin/ruby -s
# εκτυπώνει "true" εάν έχει κληθεί με τον διακόπτη `-xyz`.
print "true\n" if $xyz
-v Ενεργοποιεί τη λειτουργία αναλυτικής εκτύπωσης. Η Ruby θα εκτυπώσει την έκδοσή της στην αρχή και θα ορίσει τη μεταβλητή $VERBOSE σε true. Ορισμένες μέθοδοι εκτυπώνουν επιπλέον μηνύματα εάν αυτή η μεταβλητή είναι true. Εάν δοθεί αυτός ο διακόπτης και δεν υπάρχουν άλλοι διακόπτες, η Ruby τερματίζει μετά την εκτύπωση της έκδοσής της.
-w Ενεργοποιεί τη λειτουργία αναλυτικής εκτύπωσης χωρίς να εκτυπώνει το μήνυμα έκδοσης στην αρχή. Ορίζει τη μεταβλητή $VERBOSE σε true.
-x[κατάλογος] Λέει στη Ruby ότι το σενάριο είναι ενσωματωμένο σε ένα μήνυμα. Οι αρχικές άχρηστες πληροφορίες θα απορριφθούν μέχρι την πρώτη γραμμή που ξεκινά με το “#!” και περιέχει τη συμβολοσειρά “ruby”. Οποιοιδήποτε σημαντικοί διακόπτες σε αυτήν τη γραμμή θα εφαρμοστούν. Το τέλος του σεναρίου πρέπει να καθορίζεται είτε με το EOF, ^D (Ctrl-D), ^Z (Ctrl-Z) είτε με την δεσμευμένη λέξη __END__. Εάν καθοριστεί το όνομα του καταλόγου, η Ruby θα μεταβεί σε αυτόν τον κατάλογο πριν εκτελέσει το σενάριο.
-y
--yydebug Αυτή η επιλογή δεν είναι εγγυημένο ότι θα είναι συμβατή.
Ενεργοποιεί τη λειτουργία αποσφαλμάτωσης του μεταγλωττιστή. Η Ruby θα εκτυπώσει μια σειρά από μηνύματα εσωτερικής κατάστασης κατά τη διάρκεια της μεταγλώττισης. Καθορίστε αυτόν τον διακόπτη μόνο εάν πρόκειται να αποσφαλματώσετε τον διερμηνέα Ruby.
--disable-FEATURE
--enable-FEATURE
Απενεργοποιεί (ή ενεργοποιεί) τις καθορισμένες ΛΕΙΤΟΥΡΓΙΕΣ.
--disable-gems
--enable-gems Απενεργοποιεί (ή ενεργοποιεί) τις βιβλιοθήκες RubyGems. Από προεπιλογή, η Ruby θα φορτώσει την πιο πρόσφατη έκδοση κάθε εγκατεστημένης gem. Η σταθερά Gem είναι true εάν είναι ενεργοποιημένο το RubyGems, false εάν όχι.
--disable-rubyopt
--enable-rubyopt Αγνοεί (ή λαμβάνει υπόψη) τη μεταβλητή περιβάλλοντος RUBYOPT. Από προεπιλογή, η Ruby λαμβάνει υπόψη τη μεταβλητή.
--disable-all
--enable-all Απενεργοποιεί (ή ενεργοποιεί) όλες τις λειτουργίες.
--dump=στόχος Εκτυπώνει ορισμένες πληροφορίες.
Εκτυπώνει τον καθορισμένο στόχο. Ο στόχος μπορεί να είναι ένα από τα ακόλουθα:
version Εκτυπώνει την περιγραφή της έκδοσης (το ίδιο με το --version).
usage Εκτυπώνει ένα σύντομο μήνυμα χρήσης (το ίδιο με το -h).
help Εμφανίζει ένα εκτεταμένο μήνυμα βοήθειας (το ίδιο με το --help).
syntax Ελέγχει τη σύνταξη (το ίδιο με το -c --yydebug).
Ή ένα από τα ακόλουθα, τα οποία προορίζονται για αποσφαλμάτωση του διερμηνέα:
yydebug Ενεργοποιεί τη λειτουργία αποσφαλμάτωσης του μεταγλωττιστή (το ίδιο με το --yydebug).
parsetree Εκτυπώνει μια αναπαράσταση σε μορφή κειμένου του AST της Ruby για το πρόγραμμα.
parsetree_with_comment Εκτυπώνει μια αναπαράσταση σε μορφή κειμένου του AST της Ruby για το πρόγραμμα, αλλά με κάθε κόμβο που σχολιάζεται με τον σχετικό πηγαίο κώδικα της Ruby.
insns Εκτυπώνει μια λίστα με τις αποσυναρμολογημένες οδηγίες byte code.
insns_without_opt Εκτυπώνει τη λίστα με τις αποσυναρμολογημένες οδηγίες byte code πριν από την εφαρμογή διαφόρων βελτιστοποιήσεων.
--verbose Ενεργοποιεί τη λειτουργία αναλυτικής εκτύπωσης χωρίς να εκτυπώνει το μήνυμα έκδοσης στην αρχή. Ορίζει τη μεταβλητή $VERBOSE σε true. Εάν δοθεί αυτός ο διακόπτης και δεν υπάρχουν ορίσματα σεναρίου (αρχείο σεναρίου ή επιλογές -e), η Ruby τερματίζει αμέσως.
--crash-report=template
Καθορίζει το πρότυπο του ονόματος διαδρομής για την αποθήκευση της αναφοράς σφαλμάτων. Δείτε την περιβαλλοντική μεταβλητή RUBY_CRASH_REPORT για λεπτομέρειες.
ΠΕΡΙΒΑΛΛΟΝ
RUBYLIB Μια λίστα καταχωρήσεων που χωρίζονται με άνω τελεία από καταλόγους που προστίθενται στη διαδρομή φόρτωσης βιβλιοθηκών της Ruby ($:).
Οι κατάλογοι από αυτήν την περιβαλλοντική μεταβλητή αναζητούνται πριν από την τυπική διαδρομή φόρτωσης.
π.χ.:
RUBYLIB="$HOME/lib/ruby:$HOME/lib/rubyext"
RUBYOPT Επιπλέον επιλογές Ruby.
π.χ.
RUBYOPT="-w -Ke"
Σημειώστε ότι το RUBYOPT μπορεί να περιέχει μόνο -d, -E, -I, -K, -r, -T, -U, -v, -w, -W, --debug, --disable-FEATURE και --enable-FEATURE.
RUBYPATH Μια λίστα καταχωρήσεων που χωρίζονται με άνω τελεία από καταλόγους που η Ruby αναζητά για προγράμματα Ruby όταν καθορίζεται η σημαία -S. Αυτή η μεταβλητή προηγείται της περιβαλλοντικής μεταβλητής PATH.
RUBYSHELL Η διαδρομή προς την εντολή του συστήματος shell. Αυτή η περιβαλλοντική μεταβλητή είναι ενεργοποιημένη μόνο για τις πλατφόρμες mswin32, mingw32 και OS/2. Εάν αυτή η μεταβλητή δεν είναι ορισμένη, η Ruby αναφέρεται στο COMSPEC.
PATH Η Ruby αναφέρεται στην περιβαλλοντική μεταβλητή PATH κατά την κλήση του Kernel#system.
Και η Ruby εξαρτάται από ορισμένες περιβαλλοντικές μεταβλητές που σχετίζονται με το RubyGems, εκτός εάν το RubyGems είναι απενεργοποιημένο. Δείτε την βοήθεια του gem(1) όπως παρακάτω.
% gem help
ΠΕΡΙΒΑΛΛΟΝ ΓΚ
Η συλλογή απορριμμάτων (GC) της Ruby παρακολουθεί τα αντικείμενα σε θύρες σταθερού μεγέθους, αλλά κάθε αντικείμενο μπορεί να έχει βοηθητικές κατανομές μνήμης που διαχειρίζονται η οικογένεια συναρτήσεων malloc της C standard library (malloc(3), calloc(3) και realloc(3)). Σε αυτό το έγγραφο, η "στοίβα" αναφέρεται στην στοίβα αντικειμένων της Ruby σταθερού μεγέθους, ενώ η "malloc" αναφέρεται στις βοηθητικές κατανομές, στις οποίες συνήθως αναφέρεται ως "στοίβα διεργασιών". Έτσι, υπάρχουν τουλάχιστον δύο πιθανοί τρόποι για να ενεργοποιηθεί η GC:
1 Η επίτευξη του ορίου αντικειμένων.
2 Η επίτευξη του ορίου malloc.
Στην Ruby 2.1, εισήχθη η διαγενεακή GC και τα όρια χωρίζονται σε νέες και παλιές γενιές, παρέχοντας δύο επιπλέον τρόπους ενεργοποίησης μιας GC:
3 Η επίτευξη του ορίου παλαιών αντικειμένων.
4 Η επίτευξη του ορίου παλαιών malloc.
Επί του παρόντος υπάρχουν 4 πιθανές περιοχές όπου η GC μπορεί να ρυθμιστεί από τις ακόλουθες 11 περιβαλλοντικές μεταβλητές: RUBY_GC_HEAP_INIT_SLOTS Αρχική κατανομή θυρών. Εφαρμόζεται σε όλα τα μεγέθη θυρών. Εισήχθη στην Ruby 2.1, προεπιλογή: 10000.
RUBY_GC_HEAP_%d_INIT_SLOTS Αρχική κατανομή θυρών σε μια συγκεκριμένη στοίβα. Οι διαθέσιμες στοίβες μπορούν να βρεθούν στα κλειδιά του `GC.stat_heap`. Εισήχθη στην Ruby 3.3.
RUBY_GC_HEAP_FREE_SLOTS Ετοιμάστε τουλάχιστον αυτόν τον αριθμό θυρών μετά την GC. Κατανείμετε αυτόν τον αριθμό θυρών εάν δεν υπάρχουν αρκετές θύρες. Εισήχθη στην Ruby 2.1, προεπιλογή: 4096
RUBY_GC_HEAP_GROWTH_FACTOR Αυξήστε τον ρυθμό κατανομής των θυρών της στοίβας κατά αυτόν τον παράγοντα. Εισήχθη στην Ruby 2.1, προεπιλογή: 1.8, ελάχιστο: 1.0 (καμία ανάπτυξη)
RUBY_GC_HEAP_GROWTH_MAX_SLOTS Περιορίζει τον ρυθμό κατανομής σε αυτόν τον αριθμό θέσεων, αποτρέποντας υπερβολική κατανομή λόγω του RUBY_GC_HEAP_GROWTH_FACTOR. Εισήχθη στην Ruby 2.1, προεπιλογή: 0 (χωρίς όριο)
RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR Εκτελεί μια πλήρη GC όταν ο αριθμός των παλαιών αντικειμένων είναι μεγαλύτερος από R * N, όπου το R είναι αυτός ο παράγοντας και το N είναι ο αριθμός των παλαιών αντικειμένων μετά την τελευταία πλήρη GC. Εισήχθη στην Ruby 1.1, προεπιλογή: 2.0
RUBY_GC_MALLOC_LIMIT Το αρχικό όριο κατανομής νεότερης γενιάς από την οικογένεια malloc. Η GC θα ξεκινήσει όταν αυτό το όριο επιτευχθεί. Προεπιλογή: 16MB
RUBY_GC_MALLOC_LIMIT_MAX Το μέγιστο όριο κατανομής νεότερης γενιάς από το malloc πριν ξεκινήσει η GC. Αποτρέπει την υπερβολική ανάπτυξη του malloc λόγω του RUBY_GC_MALLOC_LIMIT_GROWTH_FACTOR. Εισήχθη στην Ruby 2.1, προεπιλογή: 32MB.
RUBY_GC_MALLOC_LIMIT_GROWTH_FACTOR Αυξάνει το όριο των κλήσεων malloc νεότερης γενιάς, μειώνοντας τη συχνότητα της GC αλλά αυξάνοντας την ανάπτυξη του malloc έως ότου επιτευχθεί το RUBY_GC_MALLOC_LIMIT_MAX. Εισήχθη στην Ruby 1, προεπιλογή: 1.4, ελάχιστο: 1.0 (χωρίς ανάπτυξη)
RUBY_GC_OLDMALLOC_LIMIT Το αρχικό όριο κατανομής παλαιάς γενιάς από το malloc, μια πλήρης GC θα ξεκινήσει όταν αυτό το όριο επιτευχθεί. Εισήχθη στην Ruby 2.1, προεπιλογή: 16MB
RUBY_GC_OLDMALLOC_LIMIT_MAX Το μέγιστο όριο κατανομής παλαιάς γενιάς από το malloc πριν ξεκινήσει μια πλήρης GC. Αποτρέπει την υπερβολική ανάπτυξη του malloc λόγω του RUBY_GC_OLDMALLOC_LIMIT_GROWTH_FACTOR. Εισήχθη στην Ruby 2.1, προεπιλογή: 128MB
RUBY_GC_OLDMALLOC_LIMIT_GROWTH_FACTOR Αυξάνει το όριο κατανομής παλαιάς γενιάς, μειώνοντας τη συχνότητα της πλήρους GC αλλά αυξάνοντας την ανάπτυξη του malloc έως ότου επιτευχθεί το RUBY_GC_OLDMALLOC_LIMIT_MAX. Εισήχθη στην Ruby 2.1, προεπιλογή: 1.2, ελάχιστο: 1.0 (χωρίς ανάπτυξη)
ΠΕΡΙΒΑΛΛΟΝ ΜΕΓΕΘΟΥΣ ΣΤΟΙΒΑΣ
Οι μεταβλητές περιβάλλοντος μεγέθους στοίβας εξαρτώνται από την υλοποίηση και υπόκεινται σε αλλαγές με διαφορετικές εκδόσεις της Ruby. Η στοίβα VM χρησιμοποιείται για κώδικα καθαρής Ruby και διαχειρίζεται από την εικονική μηχανή. Η στοίβα μηχανής χρησιμοποιείται από το λειτουργικό σύστημα και η χρήση της εξαρτάται από τις επεκτάσεις C καθώς και από τις επιλογές του μεταγλωττιστή C. Η χρήση μικρότερων τιμών για αυτές μπορεί να επιτρέψει στις εφαρμογές να διατηρούν περισσότερα Fibers ή Threads σε λειτουργία. Ωστόσο, αυξάνει την πιθανότητα εμφάνισης εξαιρέσεων SystemStackError και διακοπών τμήματος (SIGSEGV). Αυτές οι μεταβλητές περιβάλλοντος είναι διαθέσιμες από την Ruby 2.0.0. Όλες οι τιμές καθορίζονται σε byte.
RUBY_THREAD_VM_STACK_SIZE Μέγεθος στοίβας VM που χρησιμοποιείται κατά τη δημιουργία thread. προεπιλογή: 524288 (CPU 32-bit) ή 1048575 (CPU 64-bit)
RUBY_THREAD_MACHINE_STACK_SIZE Μέγεθος στοίβας μηχανής που χρησιμοποιείται κατά τη δημιουργία thread. προεπιλογή: 524288 ή 1048575
RUBY_FIBER_VM_STACK_SIZE Μέγεθος στοίβας VM που χρησιμοποιείται κατά τη δημιουργία fiber. προεπιλογή: 65536 ή 131072
RUBY_FIBER_MACHINE_STACK_SIZE Μέγεθος στοίβας μηχανής που χρησιμοποιείται κατά τη δημιουργία fiber. προεπιλογή: 262144 ή 524288
ΠΕΡΙΒΑΛΛΟΝ ΑΝΑΦΟΡΑΣ ΚΡΑΧ
RUBY_CRASH_REPORT Το πρότυπο της διαδρομής ονόματος για την αποθήκευση της αναφοράς κραχ. προεπιλογή: καμία
Ονομασία αρχείων αναφορών σφαλμάτων
Το πρότυπο μπορεί να περιέχει καθοριστές % που αντικαθίστανται από τις ακόλουθες τιμές όταν δημιουργείται ένα αρχείο αναφοράς σφάλματος:
%% Ένας μόνο χαρακτήρας %.
%e Βασικό όνομα του εκτελέσιμου αρχείου.
%E Διαδρομή του εκτελέσιμου αρχείου, με τις κάθετες γραμμές (/) να αντικαθίστανται από θαυμαστικά (!).
%f Βασικό όνομα του ονόματος του προγράμματος, $0.
%F Διαδρομή του ονόματος του προγράμματος, $0, με τις κάθετες γραμμές (/) να αντικαθίστανται από θαυμαστικά (!).
%p PID της διαδικασίας για την οποία δημιουργήθηκε η αναφορά.
%t Ώρα δημιουργίας της αναφοράς, εκφρασμένη ως δευτερόλεπτα από την εποχή, 1970-01-01 00:00:00 +0000 (UTC).
%NNN Ένας χαρακτήρας κώδικα σε οκταδικό.
Ένα μόνο % στο τέλος του προτύπου απορρίπτεται από το όνομα του αρχείου αναφοράς, καθώς και ο συνδυασμός ενός % ακολουθούμενου από οποιονδήποτε άλλο χαρακτήρα εκτός από αυτούς που αναφέρονται παραπάνω. Όλοι οι υπόλοιποι χαρακτήρες στο πρότυπο γίνονται κυριολεκτικά μέρος του ονόματος του αρχείου αναφοράς. Το πρότυπο μπορεί να περιλαμβάνει χαρακτήρες '/', οι οποίοι ερμηνεύονται ως οριοθέτες για ονόματα καταλόγων.
Διαβίβαση αναφορών σφαλμάτων σε ένα πρόγραμμα
Εάν ο πρώτος χαρακτήρας αυτού του αρχείου είναι το σύμβολο κάθετης γραμμής (|), τότε το υπόλοιπο της γραμμής ερμηνεύεται ως η γραμμή εντολών ενός προγράμματος (ή σεναρίου) που θα εκτελεστεί.
Το πρότυπο της κάθετης γραμμής χωρίζεται σε κενά σε μια λίστα ορισμάτων πριν από την επέκταση των παραμέτρων του προτύπου.
ΔΕΣ ΕΠΙΣΗΣ
[https://www.ruby-lang.org/] Η επίσημη ιστοσελίδα.
[https://www.ruby-toolbox.com/] Αναλυτικός κατάλογος βιβλιοθηκών Ruby.
ΑΝΑΦΟΡΑ ΣΦΑΛΜΑΤΩΝ
Τα κενά ασφαλείας θα πρέπει να αναφέρονται μέσω ενός μηνύματος ηλεκτρονικού ταχυδρομείου στη διεύθυνση _. Τα προβλήματα που θα αναφερθούν θα δημοσιευτούν μετά την επίλυσή τους.
Άλλα σφάλματα και αιτήματα λειτουργιών μπορούν να αναφερθούν μέσω του Συστήματος παρακολούθησης σφαλμάτων Ruby (https://bugs.ruby-lang.org/). Μην αναφέρετε κενά ασφαλείας μέσω αυτού του συστήματος, επειδή δημοσιεύει αμέσως τα κενά.
ΣΥΓΓΡΑΦΕΙΣ
Η Ruby σχεδιάστηκε και υλοποιήθηκε από τον Yukihiro Matsumoto <_>.
Δείτε <https://github.com/ruby/ruby/graphs/contributors> για τους συνεισφέροντες στην Ruby.