Skip to content

Commit

Permalink
Improve manual
Browse files Browse the repository at this point in the history
  • Loading branch information
hhugo committed Feb 3, 2025
1 parent ad605a8 commit 2e6aee8
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 19 deletions.
24 changes: 12 additions & 12 deletions manual/debug.wiki
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,30 @@

== Use the right compiler flags
=== OCaml flags
Make sure to use "-g" flags when compiling and linking ocaml bytecode.
Make sure to use {{{-g}}} flags when compiling and linking ocaml bytecode.
Js_of_ocaml will attempt to preserve variable names.

=== Js_of_ocaml flags
* [--pretty] - format the generated JavaScript in a readable way and try to keep OCaml variable names.
* [--no-inline] - prevent function inlining.
* [--debug-info] - annotate the JavaScript file with locations from the OCaml sources.
* [--source-map] - enable source-map support
* {{{--pretty}}} - format the generated JavaScript in a readable way and try to keep OCaml variable names.
* {{{--no-inline}}} - prevent function inlining.
* {{{--debug-info}}} - annotate the JavaScript file with locations from the OCaml sources.
* {{{--source-map}}} - enable source-map support
== JavaScript stacktrace
Js_of_ocaml can attach a JavaScript [Error] that embed the current
stacktrace to an OCaml exception. The [Error] can be attached with
Js_of_ocaml can attach a JavaScript {{{Error}}} that embed the current
stacktrace to an OCaml exception. The {{{Error}}} can be attached with
{{{Js.Js_error.attach_js_backtrace}}} and extracted using
{{{Js.Js_error.of_exn}}}. Un-handled OCaml exception will throw any
JavaScript [Error] attached to them, allowing the JS engine to display
JavaScript {{{Error}}} attached to them, allowing the JS engine to display
the stacktrace nicely.

Js_of_ocaml will attach an [Error] automatically when raising an OCaml
Js_of_ocaml will attach an {{{Error}}} automatically when raising an OCaml
exception (with {{{raise}}}, not with {{{raise_notrace}}}) if
{{{Printexc.backtrace_status() = true}}} and either the environment
variable [OCAMLRUNPARAM] is set with [b=1] or the program was compiled
with [--enable with-js-error].
variable {{{OCAMLRUNPARAM}}} is set with {{{b=1}}} or the program was compiled
with {{{--enable with-js-error}}}.

Note that creating JavaScript [Error]s is costly and can degrade performance a lot.
Note that creating JavaScript {{{Error}}}s is costly and can degrade performance a lot.
This is the reason why such feature is not enabled by default.

== Breakpoint
Expand Down
8 changes: 4 additions & 4 deletions manual/environment-variable.wiki
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
To resolve an environment variable, js_of_ocaml will perform the
following steps, in the given order:

- If the variable was set at compile time with the [--setenv VAR] flag, return it.
- If running nodejs and the variable is set in the process environment ([process.env]), return it.
- If the variable is set in [globalThis.jsoo_env], return it. This can be used
* If the variable was set at compile time with the {{{--setenv VAR}}} flag, return it.
* If running nodejs and the variable is set in the process environment ({{{process.env}}}), return it.
* If the variable is set in {{{globalThis.jsoo_env}}}, return it. This can be used
to set an environment variable inside a web-browser.
- Return Not_found
* Return Not_found
7 changes: 5 additions & 2 deletions manual/overview.wiki
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@ Js_of_ocaml is composed of multiple packages:
* js_of_ocaml-toplevel, lib and tools to build an ocaml toplevel to
javascript.

There is also a compiler targeting WebAssembly provided by the
wasm_of_ocaml package, see <<a_manual chapter="wasm_overview" |wasm_of_ocaml>>.

Note: All code examples in this manual use Js_of_ocaml's ppx syntax.
It is, however, possible to use Js_of_ocaml purely as a compiler
while using a different package (e.g. gen_js_api, brr) to
Expand Down Expand Up @@ -87,8 +90,8 @@ functions are optimized:
Effect handlers are fully supported with the
{{{--enable=effects}}} flag. Effect support is disabled by
default for now since effects are not widely used at the moment and the
generated code can be slower, larger and less readable. See the dedicated
manual section about effects for details.
generated code can be slower, larger and less readable. See the [[effects|dedicated
manual section]] for details.
Data representation differs from the usual one. Most notably,
integers are 32 bits (rather than 31 bits or 63 bits), which is their
Expand Down
2 changes: 1 addition & 1 deletion manual/wasm_overview.wiki
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
Wasm_of_ocaml is a compiler from OCaml bytecode programs to WebAssembly.
It provides an alternative way to run pure OCaml programs in JavaScript environments like browsers and Node.js.

The compiler is provided by the wasm_of_ocaml-package. The <<a_manual chapter="overview" |Js_of_ocaml libraries>> are compatible with this compiler.
The compiler is provided by the wasm_of_ocaml-compiler package. The <<a_manual chapter="overview" |Js_of_ocaml libraries>> are compatible with this compiler.

== Installation

Expand Down

0 comments on commit 2e6aee8

Please sign in to comment.