Dies ist der Befehl urweb, der im kostenlosen OnWorks-Hosting-Provider über eine unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, Windows-Online-Emulator oder MAC OS-Online-Emulator ausgeführt werden kann
PROGRAMM:
NAME/FUNKTION
Urweb - Compiler für die Programmiersprache Ur/Web
ZUSAMMENFASSUNG
Urweb [ganz ohne irgendetwas tun oder drücken zu müssen.|Projektname] ...
Urweb Daemon [Anfang|halt]
BESCHREIBUNG
Diese Handbuchseite dokumentiert kurz die Urweb Compiler. Umfangreiche Dokumentation ist
verfügbar im Ur/Web-Referenzhandbuch.
Urweb ist ein optimierender Compiler für Ur/Web, ein funktionaler, reiner, statisch typisierter, streng
evaluierte Programmiersprache zum Erstellen dynamischer Webanwendungen mit Unterstützung
von SQL-Datenbanken. Urweb erzeugt sehr effizienten Objektcode, der keinen Müll verwendet
Sammlung; kompilierte Programme sind oft noch effizienter als die meisten Programmierer
würde sich die Mühe machen in C zu schreiben.
Der erste beschriebene Aufruf kompiliert ein Ur/Web-Projekt (siehe ZUSAMMENSTELLUNG), Während die
zweiter Aufruf steuert den Typinferenz-Daemon (siehe TYP INFERENZ DÄMON). Für
einfache Projekte, ist nur die Vertrautheit mit dem ersten Aufruf erforderlich.
ZUSAMMENSTELLUNG
Urweb ist ein Compiler für das gesamte Programm (dh die inkrementelle Kompilierung wird nicht unterstützt). Daher,
Es arbeitet mit Projektgranularität und wird über die Befehlszeile mit einer Sammlung ausgeführt
von Optionen und einen Projektnamen. Der einfachste Fall ist zu laufen Urweb foo, wo die Datei
foo.ur enthält ein gültiges Ur/Web-Programm, in diesem Fall Urweb wird das Programm kompilieren, um
die Datei foo.exe. (Trotz der Erweiterung der generierten Dateien, Urweb nicht
notwendigerweise ausführbare COFF-Dateien erzeugen; es erzeugt vielmehr das Standardobjektformat der
Standard-C-Compiler.)
Größere Programme, die sich über viele Dateien erstrecken, können kompiliert werden, indem ein . angegeben wird .urp (dh ein
Ur/Web-Projekt) Datei. Die Syntax von an .urp Datei ist relativ einfach; siehe Abschnitt 3.1 von
Einzelheiten finden Sie im Ur/Web-Referenzhandbuch.
Ohne Argumente, Urweb druckt die Versionsnummer und beendet sich.
Compiler Optionen
-compiler Programm
Legt den Namen der ausführbaren Datei entsprechend dem C-Compiler fest. Urweb verwendet gcc by
Standard, aber Klappern sollte auch funktionieren.
-db Name=Wert, ...
Setzt Datenbankinformationen in dem von Postgres erwarteten Format PQconnectdb. Wenn
das Datenbank-Backend ist MySQL oder SQLite, Urweb parst die Informationszeichenfolge zu
stellen Sie die Verbindungsparameter entsprechend ein. Für MySQL die einzigen relevanten Parameter
sind Gastgeber, Hostadresse, port , Datenbankname, Benutzer und Passwort; für SQLite, das einzig relevante
Parameter ist Datenbankname, die als Dateisystempfad zur Datenbank interpretiert wird
Datei. Alle nicht erkannten Parameter werden stillschweigend ignoriert.
-dbms (Postgres|mysql|SQLite)
Legt das Datenbank-Backend fest. Wenn benötigt, Urweb wird auch Initialisierungscode ausgeben
für das ausgewählte Backend; sieh das -sql .
-debuggen Anweisungen Urweb um den generierten C-Code auszugeben als /tmp/webapp.c. Zusätzlich sind Urweb
druckt die Befehlszeilenoptionen, die es an den C-Compiler und -Linker übergibt, wie es
ausführt.
-DumpQuelle
Anweisungen Urweb um ein textbasiertes Formular des aktuellen Intermediates zu drucken
Darstellung (IR), wenn die Kompilierung fehlschlägt. Die Ausgabe wird wahrscheinlich extrem lang sein
und nicht sehr menschenlesbar.
-dumpVerboseSource
Anweisungen Urweb um eine textbasierte Form jeder Zwischendarstellung zu drucken
beim Kompilieren erzeugt. Die Ausgabe wird wahrscheinlich extrem lang und nicht sehr sein
für Menschen lesbar.
-dumpTypen
Falls angegeben, Urweb druckt die Typen aller benannten Werte, die es während findet
Zusammenstellung.
-dumpTypesOnError
Identisch mit -dumpTypen, gibt die Typen jedoch nur aus, wenn die Kompilierung fehlschlägt.
-erklärenEinbetten
Aktiviert ausführliche Fehlermeldungen, wenn Urweb kann serverseitige Werte nicht in einbetten
clientseitiger Code.
-Grenze Klasse num
Legt ein Ressourcennutzungslimit für generierte Anwendungen fest. Das Limit Klasse wird sein
auf die nicht negative ganze Zahl gesetzt num. Die Klassen sind:
Aufräumarbeiten
maximale Anzahl von Bereinigungsvorgängen (z. B. Einträge, die den Bedarf an
bestimmte temporäre Objekte freigeben), die pro Anfrage auf einmal aktiv sein können
Kunden
maximale Anzahl von Clients, die gleichzeitig blockiert werden können und auf neue warten
Nachrichten (gesendet von Basis.senden)
Datenbank
maximale Größe der Datenbankdatei (derzeit nur von SQLite verwendet), in Einheiten von
Datenbankseiten
Deltas maximale Anzahl von Nachrichten, die in einem einzigen Request-Handler gesendet werden können, mit
Basis.senden
globals
maximale Anzahl globaler Variablen, die FFI-Bibliotheken in einem einzigen setzen können
Kontext anfordern
Überschriften
maximale Größe (in Byte) des Puffers pro Anfrage, der verwendet wird, um HTTP-Header für
generierte Seiten
Haufen maximale Größe (in Byte) des Heaps pro Anforderung für dynamisch zugewiesene Daten
Eingänge maximale Anzahl von Formularfeldern der obersten Ebene pro Anfrage
Nachrichten
maximale Größe (in Bytes) des Puffers pro Anfrage, der verwendet wird, um einen einzelnen ausgehenden
Nachricht gesendet mit Basis.senden
Seite maximale Größe (in Bytes) des Puffers pro Anfrage, der verwendet wird, um HTML-Inhalte von
generierte Seiten
Skript maximale Größe (in Bytes) des Puffers pro Anfrage, der verwendet wird, um JavaScript zu speichern
Inhalt der generierten Seiten
Untereingänge
maximale Anzahl von Formularfeldern pro Anfrage, ausgenommen Felder der obersten Ebene
Zeit maximale Laufzeit einer einzelnen Seitenanforderung, in Einheiten von ca. 0.1
Sekunden
Transaktionsdaten
maximale Anzahl benutzerdefinierter Transaktionsaktionen (z. B. Senden einer E-Mail)
die in einer einzigen Seitengeneration ausgeführt werden können
-Ausgang Dateinamen
Legt fest, wo Urweb speichert die kompilierte ausführbare Datei.
-Pfad Name Wert
Definiert einen neuen Pfadalias für die Verwendung in .urp Dateien. Insbesondere diese Option
gibt an, dass alle Vorkommen von $Name in irgendeiner .urp verarbeitete Dateien werden
Ersetzt mit Wert. Sie können diese Option mehrmals angeben.
-Präfix Präfix
Legt das Anwendungspräfix fest. Dies steuert, wie Ur/Web-Funktionen an URIs gebunden werden;
insbesondere wenn Präfix is /directory/myapp.exe/, dann URIs der Form
//example.com/directory/myapp.exe/Module/function wird auf die funktion auflösen
Modul.Funktion in Ur/Web.
-Protokoll (http|Cgi|fastcgi|statisch)
Anweisungen Urweb um eine ausführbare Datei zu erzeugen, die das angegebene Protokoll spricht:
http HTTP1.1. Urweb generiert eine eigenständige ausführbare Serverdatei.
Cgi Das Common Gateway Interface, das klassische Protokoll, das Webserver verwenden, um
Generieren Sie dynamische Inhalte, indem Sie neue Prozesse hervorbringen. Während Ur/Web-Programme
kann im Allgemeinen Message-Passing mit dem senden und recv Funktionen, die
Funktionalität wird in CGI noch nicht unterstützt, da CGI einen neuen Prozess benötigt
für jede Anfrage, und die Nachrichtenweitergabe muss persistente Sockets verwenden, um
Nachrichten übermitteln.
Da Ur/Web Pfade auf ungewöhnliche Weise behandelt, müssen Sie konfigurieren
Ur/Web speziell durch Einstellen der Präfix Richtlinie in Ihrem .urp Datei oder
vorbei an der -Präfix Option auf der Befehlszeile. Wenn Sie beispielsweise bereitstellen
eine Webanwendung bei //example.com/directory/myapp.exe, solltest du angeben
/directory/myapp.exe/ als Anwendungspräfix. Siehe Abschnitt 3.2 der
Ur/Web-Referenzhandbuch für weitere Informationen.
fastcgi
Das schnellere, neuere Protokoll, inspiriert von CGI, bei dem Webserver starten können
und Wiederverwendung persistenter externer Prozesse, um dynamische Inhalte zu generieren. Ur/Web
implementiert nicht das gesamte Protokoll, aber die Unterstützung von Ur/Web wurde getestet
um sowohl mit Apache als auch mit lighttpd zu arbeiten.
Anwendungen, die Message-Passing verwenden, werden zwar unterstützt, erfordern jedoch spezielle
Aufbau. Wenn Sie Apache verwenden, geben Sie insbesondere a
grosse Leerlauf-Auszeit; Wenn Sie lighttpd verwenden, stellen Sie sicher, dass max-Prozesse um 1.
Die Gründe für diese Konfigurationsänderungen werden in Abschnitt 3.2 von
das Ur/Web-Referenzhandbuch.
statisch Das einfachste mögliche Protokoll. Urweb erzeugt eine ausführbare Ausgabedatei
die ein einzelnes Befehlszeilenargument erwartet, das den URI einer Seite angibt
generieren. Dieses Argument könnte beispielsweise lauten /hauptsächlich, in welchem Fall a
statische HTTP-Antwort für diese Seite wird in die Standardausgabe geschrieben.
-Wurzel Name Weg
Löst eine alternative Modulkonvention für alle im Verzeichnis gefundenen Quelldateien aus
Weg oder eines seiner Unterverzeichnisse. Insbesondere jede Datei Weg/foo.ur wird definieren
ein Modul namens Name.Foo statt des üblichen foo. Beliebige Datei Weg/subdir/foo.ur
definiert ein Modul namens Name.Unterverzeichnis.Foo, und so weiter für eine beliebige Verschachtelung von
Unterverzeichnisse. Sie können diese Option mehrmals angeben.
-signfile Weg
Wenn angegeben, wird die kompilierte Anwendung auf Weg für einen Schlüssel zur Verwendung in
kryptografisches Signieren. Dies wird verwendet, um Cross-Site-Request-Forgery-Angriffe zu verhindern
für jeden Formularhandler, der sowohl ein Cookie liest als auch Nebeneffekte erzeugt. Wenn die
referenzierte Datei nicht vorhanden ist, erstellt die Anwendung sie und liest ihre gespeicherten Dateien
Daten über zukünftige Aufrufe. Sie können die Datei auch manuell mit jedem initialisieren
Inhalt mindestens 16 Byte lang; die ersten 16 Byte werden als Schlüssel behandelt.
-sql Datei
Fordert das Urweb Generieren Sie den Datenbank-Initialisierungscode für die ausgewählte Datenbank
Backend, speichern in Datei. Wenn Datei ist bereits vorhanden, Urweb werde es überschreiben.
Beachten Sie, dass die generierten Anweisungen die Anwendungsdatenbank nicht erstellen; Sie
muss das selber machen.
-statisch
Anweisungen Urweb um die generierte ausführbare Datei statisch zu verknüpfen.
-zeitliche Koordinierung
Falls angegeben, Urweb druckt am Ende der Kompilierung einen Timing-Bericht mit Anzeige
die Anzahl der Sekunden, die für jede Stufe des Kompilierungsvorgangs erforderlich sind.
-unifyMehr
Anweisungen Urweb's Typ-Inferenz-Engine, um bestmögliche Vermutungen anzustellen, anstatt
schlägt sofort fehl, wenn Typinferenz durchgeführt wird. Wenn -dumpTypen zeigt ungelöst
Vereinheitlichungsvariablen an Positionen, die Sie sehen möchten Urweb am besten machen-
schätzt stattdessen den Aufwand, geben Sie diese Option an.
Korrekte Programme kompiliert mit -unifyMehr werden mit ihren Gegenstücken identisch sein
ohne kompiliert; jedoch, Urweb wird wahrscheinlich viel mehr generieren (und möglicherweise
nützlicher) Fehlermeldungen gleichzeitig, wenn Sie aufgefordert werden, ein falsches Programm zu kompilieren
mit dieser Flagge.
-verbose
Anweisungen Urweb um die Phasen des Kompilierungsvorgangs während seiner Ausführung bekannt zu geben
Them.
Optionen welche hemmen Zusammenstellung
Wenn Sie mit einer dieser Optionen ausführen, Urweb erzeugt keine ausführbare Ausgabe.
-css Dumps generierte CSS-Eigenschaften und -Klassen. Die erste Ausgabezeile ist eine Liste von
Kategorien von CSS-Eigenschaften, die es wert wären, im Dokumenttext festgelegt zu werden. Die
verbleibende Zeilen sind durch Leerzeichen getrennte Paare von CSS-Klassennamen und Kategorien von
Eigenschaften, die es wert wären, für diese Klasse festgelegt zu werden. Die Kategoriecodes sind
in zwei Sorten unterteilt. Codes, die Eigenschaften eines Tags oder seiner
(rekursive) Kinder sind
B für Elemente auf Blockebene,
C für Tabellenüberschriften,
D für Tabellenzellen,
L für Listen und
T für Tabellen.
Codes, die Eigenschaften des genauen Tags offenbaren, das eine Klasse verwendet, sind
b für Elemente auf Blockebene,
t für Tabellen,
d für Tabellenzellen,
- für Tabellenzeilen,
H für die Möglichkeit, eine Höhe einzustellen,
N für nicht ersetzte Inline-Level-Elemente,
R für ersetzte Inline-Elemente und
W für die Möglichkeit, eine Breite einzustellen.
-moduleOf Datei
Druckt den Ur-Modulnamen entsprechend der Quelldatei Datei.
-numerische-Version
Gibt die Version der ausführbaren Compilerdatei ohne zugehörigen englischen Text aus.
Geeignet für die Verwendung in Skripten.
-Druck-Compiler
Gibt den ausführbaren Namen des Compilers aus, der Urweb wird benutzen.
-drucken-einschließen
Druckt den Speicherort des Dateisystems, in dem Urweb sucht nach C-Headern.
-tc Falls angegeben, Urweb stoppt nach der Typprüfungsphase. Liberaler Gebrauch davon
Option kann die Entwicklung erheblich beschleunigen, da Urweb's Optimierungsdurchgänge können dauern
schon eine Weile.
-Ausführung
Gibt die Version der ausführbaren Compilerdatei aus. Ausgabe ist identisch mit Urweb Möglichkeiten für das Ausgangssignal:
wenn ohne Argumente ausgeführt.
Dokumentation Optionen
Diese Optionen passen den Dokumentationsgenerator von Ur/Web an.
Demo Führt Formatierungen im Demo-Stil durch.
-geführte-demo
Führt eine Formatierung im Demo-Stil durch, passt die Frames jedoch so an, dass weniger Platz zugewiesen wird
erklärender Text. Nützlich zum Erstellen von Präsentationen.
-neinEmacs
Bei Verwendung mit Demo, Ursachen Urweb zu nicht Verwenden Sie Emacs, um Code in der Syntax hervorzuheben. Die
resultierender Code wird nicht hervorgehoben.
-Lernprogramm
Führt Formatierungen im Tutorial-Stil durch.
Intern Optionen
Diese Optionen sind nicht für Benutzer gedacht; sie werden zum bauen verwendet Urweb Releases und zu debuggen
der Compiler.
-Stiefel Länder/Regionen Urweb in den Bootstrap-Modus. Wird beim Erstellen der Standardbibliothek für die
erstes Mal.
-halt Phase Ursachen Urweb nach der angegebenen Kompilierungsphase zu beenden.
TYP INFERENZ DÄMON
Da die Inferenz des Ur-/Webtyps viel Zeit in Anspruch nehmen kann, kann es hilfreich sein,
Cachetyp-abgeleitete Versionen von Quelldateien. Dieser Modus kann durch Ausführen aktiviert werden
Urweb Daemon Anfang
Weitere urweb-Aufrufe im selben Arbeitsverzeichnis senden Anfragen an einen Hintergrund
Daemon-Prozess, der die Ergebnisse der Typinferenz nach Möglichkeit wiederverwendet und die Quelldatei verfolgt
Abhängigkeiten und Änderungszeiten.
Um den Hintergrund-Daemon zu stoppen, führen Sie
Urweb Daemon halt
Die Kommunikation erfolgt über einen Unix-Domain-Socket in der Datei .urweb_daemon in der Funktion
Verzeichnis.
Verwenden Sie urweb online mit den onworks.net-Diensten
