diff options
author | Benjamin Barenblat <bbaren@mit.edu> | 2015-12-23 16:01:51 -0500 |
---|---|---|
committer | Benjamin Barenblat <bbaren@mit.edu> | 2015-12-23 16:01:51 -0500 |
commit | 3d3886672433f0775f772d8d2ee47c5f5e0bc745 (patch) | |
tree | 072d171c17d92a6696024256c4b2f5aaa760df35 /doc | |
parent | bf037ce78c2c76a34ecca0fb8bafa5d5be38968a (diff) | |
parent | 4be7962adf740a35222bfd99608c04329a802a04 (diff) |
Merge branch 'upstream' into dfsg_clean20151220+dfsg
Diffstat (limited to 'doc')
-rw-r--r-- | doc/manual.tex | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/doc/manual.tex b/doc/manual.tex index 5c5e5cbb..0a2d6faa 100644 --- a/doc/manual.tex +++ b/doc/manual.tex @@ -153,6 +153,7 @@ Here is the complete list of directive forms. ``FFI'' stands for ``foreign func \item \texttt{ffi FILENAME} reads the file \texttt{FILENAME.urs} to determine the interface to a new FFI module. The name of the module is calculated from \texttt{FILENAME} in the same way as for normal source files. See the files \texttt{include/urweb/urweb\_cpp.h} and \texttt{src/c/urweb.c} for examples of C headers and implementations for FFI modules. In general, every type or value \texttt{Module.ident} becomes \texttt{uw\_Module\_ident} in C. \item \texttt{html5} activates work-in-progress support for generating HTML5 instead of XHTML. For now, this option only affects the first few tokens on any page, which are always the same. \item \texttt{include FILENAME} adds \texttt{FILENAME} to the list of files to be \texttt{\#include}d in C sources. This is most useful for interfacing with new FFI modules. +\item \texttt{jsFile FILENAME} asks to serve the contents of a file as JavaScript. All such content is concatenated into a single file, included via a \texttt{<script>} tag on every page that needs client-side scripting. \item \texttt{jsFunc Module.ident=name} gives the JavaScript name of an FFI value. \item \texttt{library FILENAME} parses \texttt{FILENAME.urp} and merges its contents with the rest of the current file's contents. If \texttt{FILENAME.urp} doesn't exist, the compiler also tries \texttt{FILENAME/lib.urp}. \item \texttt{limit class num} sets a resource usage limit for generated applications. The limit \texttt{class} will be set to the non-negative integer \texttt{num}. The classes are: @@ -355,6 +356,8 @@ fastcgi.server = ( There is an additional convenience method for invoking \texttt{urweb}. If the main argument is \texttt{FOO}, and \texttt{FOO.ur} exists but \texttt{FOO.urp} doesn't, then the invocation is interpreted as if called on a \texttt{.urp} file containing \texttt{FOO} as its only main entry, with an additional \texttt{rewrite all FOO/*} directive. +There are also two experimental compiler extensions enabled with flags \texttt{-iflow} and \texttt{-sqlcache}. They are intentionally not documented further here, to indicate just how very experimental they are! + \subsection{Tutorial Formatting} The Ur/Web compiler also supports rendering of nice HTML tutorials from Ur source files, when invoked like \cd{urweb -tutorial DIR}. The directory \cd{DIR} is examined for files whose names end in \cd{.ur}. Every such file is translated into a \cd{.html} version. @@ -2430,6 +2433,7 @@ It is most convenient to encapsulate an FFI binding with a new \texttt{.urp} fil \item \texttt{effectful Module.ident} registers a function that can have side effects. This is the default for \texttt{transaction}-based types, and, actually, this directive is mostly present for legacy compatibility reasons, since it used to be required explicitly for each \texttt{transaction}al function. \item \texttt{ffi FILE.urs} names the file giving your library's signature. You can include multiple such files in a single \texttt{.urp} file, and each file \texttt{mod.urp} defines an FFI module \texttt{Mod}. \item \texttt{include FILE} requests inclusion of a C header file. +\item \texttt{jsFile FILE} requests inclusion of a JavaScript source file. \item \texttt{jsFunc Module.ident=name} gives a mapping from an Ur name for a value to a JavaScript name. \item \texttt{link FILE} requests that \texttt{FILE} be linked into applications. It should be a C object or library archive file, and you are responsible for generating it with your own build process. \item \texttt{script URL} requests inclusion of a JavaScript source file within application HTML. @@ -2504,7 +2508,7 @@ void uw_set_global(uw_context, char *name, void *data, uw_callback free); \subsection{Writing JavaScript FFI Code} -JavaScript is dynamically typed, so Ur/Web type definitions imply no JavaScript code. The JavaScript identifier for each FFI function is set with the \texttt{jsFunc} directive. Each identifier can be defined in any JavaScript file that you ask to include with the \texttt{script} directive. +JavaScript is dynamically typed, so Ur/Web type definitions imply no JavaScript code. The JavaScript identifier for each FFI function is set with the \texttt{jsFunc} directive. Each identifier can be defined in any JavaScript file that you ask to include with the \texttt{script} directive, and one easy way to get code included is with the \texttt{jsFile} directive. In contrast to C FFI code, JavaScript FFI functions take no extra context argument. Their argument lists are as you would expect from their Ur types. Only functions whose ranges take the form \texttt{transaction T} should have side effects; the JavaScript ``return type'' of such a function is \texttt{T}. Here are the conventions for representing Ur values in JavaScript. |