The runtime extensions, if present, can be either compiled in a minimal or a full mode. In the minimal mode only set-eval-quota
is present. Minimal mode is the default when compiling LBM. To get the full mode the -DFULL_RTS_LIB
flag must be used when compiling.
The default behavior is to print error messages even if the error is trapped. Trapped errors can be hidden by calling this function at the beginning of a program.
Example | Result |
(hide-trapped-error) |
t |
If you have hidden trapped errors they can be toggled back to being showed again using this function.
Example | Result |
(show-trapped-error) |
t |
env-get
can be used to reify, turn into value, parts of the global environment. The global environment is stored as a hashtable and an index into this hashtable is used to extract the bindings stored under that hash.
Example | Result |
(env-get 0) |
((gc-stack newline (section 3 "set-gc-stack-size" ((para ("With `set-gc-stack-size` you can change the size of the stack used for heap traversal" "by the garbage collector.")) (code ((set-gc-stack-size 100))) nil)) newline hline) (png-count . 0)) |
(env-get 1) |
((chapter-gc section 2 "GC" ((newline (section 3 "set-gc-stack-size" ((para ("With `set-gc-stack-size` you can change the size of the stack used for heap traversal" "by the garbage collector.")) (code ((set-gc-stack-size 100))) nil)) newline hline))) (to- |
(env-get 2) |
((environment-get newline (section 3 "env-get" ((para ("`env-get` can be used to reify, turn into value, parts of the global environment." "The global environment is stored as a hashtable and an index into this hashtable" "is used to extract the bindings |
(env-get 3) |
((environment-set newline (section 3 "env-set" ((para ("`env-set` destructively sets an entry in the global environment hashtable.")) (program (((if (eq (env-get 1) nil) (env-set 1 (list (quote (a . 75))))) (env-get 1)))) (para ("Note that in the example |
(env-get 4) |
((verb closure (str) (list (quote verb) str) nil)) |
(env-get 5) |
((local-environment-get newline (section 3 "local-env-get" ((para ("`local-env-get` can be used to reify, turn into value, the local environment.")) (code ((local-env-get))) (program (((let ((a 50)) (local-env-get))))) nil)) newline hline) (hline closure |
(env-get 6) |
((chapter-environments section 2 "Environments" ((newline (section 3 "env-get" ((para ("`env-get` can be used to reify, turn into value, parts of the global environment." "The global environment is stored as a hashtable and an index into this hashtable" " |
(env-get 7) |
((symbol-table-size newline (section 3 "symtab-size" ((para ("`symtab-size` returns the size of the symbol table in bytes.")) (code ((symtab-size))) nil)) newline hline) (leading-zeroes closure (n) (if (< n 10) (str-merge "000" (to-str n)) (if (< n 100) ( |
(env-get 8) |
((symbol-table-size-flash newline (section 3 "symtab-size-flash" ((para ("`symtab-size-flash` returns the size in bytes of the portion of the symbol table" "that is stored in flash.")) (code ((symtab-size-flash))) nil)) newline hline) (render-program-disp |
(env-get 9) |
((symbol-table-size-names newline (section 3 "symtab-size-names" ((para ("`symtab-size-names` returns the size in bytes of the string names stored in" "the symbol table.")) (code ((symtab-size-names))) nil)) newline hline) (is-read-eval-txt closure (x) (m |
(env-get 10) |
((symbol-table-size-names-flash newline (section 3 "symtab-size-names-flash" ((para ("`symtab-size-names` returns the size in bytes of the string names stored in" "the symbol table in flash.")) (code ((symtab-size-names-flash))) nil)) newline hline) (rend |
(env-get 11) |
((chapter-symboltable section 2 "Symbol table" ((newline (section 3 "symtab-size" ((para ("`symtab-size` returns the size of the symbol table in bytes.")) (code ((symtab-size))) nil)) newline hline) (newline (section 3 "symtab-size-flash" ((para ("`symtab |
(env-get 12) |
((version newline (section 3 "lbm-version" ((para ("`lbm-version` returns the version of the lbm runtime system.")) (code ((lbm-version))) nil)) newline hline) (png-file closure nil (progn (var n png-count) (setq png-count (+ png-count 1)) (str-merge "./i |
(env-get 13) |
((arch newline (section 3 "is-64bit" ((para ("`is-64bit` returns true if a 64bit version of lbm is running.")) (code ((is-64bit))) nil)) newline hline)) |
(env-get 14) |
((word newline (section 3 "word-size" ((para ("`word-size` returns 4 on 32bit LBM and 8 on 64bits.")) (code ((word-size))) nil)) newline hline)) |
(env-get 15) |
((chapter-versioning section 2 "Version" ((newline (section 3 "lbm-version" ((para ("`lbm-version` returns the version of the lbm runtime system.")) (code ((lbm-version))) nil)) newline hline) (newline (section 3 "is-64bit" ((para ("`is-64bit` returns tru |
(env-get 16) |
((hide-em newline (section 3 "hide-trapped-error" ((para ("The default behavior is to print error messages even if the error is trapped." "Trapped errors can be hidden by calling this function at the beginning of a program.")) (code ((hide-trapped-error)) |
(env-get 17) |
((show-em newline (section 3 "show-trapped-errors" ((para ("If you have hidden trapped errors they can be toggled back to being showed again" "using this function.")) (code ((show-trapped-error))) nil)) newline hline) (render-code-disp-table closure (rend |
(env-get 18) |
((chapter-errors section 2 "Errors" ((newline (section 3 "hide-trapped-error" ((para ("The default behavior is to print error messages even if the error is trapped." "Trapped errors can be hidden by calling this function at the beginning of a program.")) |
(env-get 19) |
((manual (section 1 "LispBM Runtime Extensions Reference Manual" ((para ("The runtime extensions, if present, can be either compiled" "in a minimal or a full mode." "In the minimal mode only `set-eval-quota` is present." "Minimal mode is the default when |
(env-get 20) |
((render-manual closure nil (let ((h (fopen "runtimeref.md" "w")) (r (lambda (s) (fwrite-str h s)))) (progn (gc) (var t0 (systime)) (render r manual) (print "Runtime reference manual was generated in " (secs-since t0) " seconds"))) nil) (frame-i . 0) (pro |
(env-get 21) |
((frame-max . 0) (image closure (alt url) (list (quote image) alt url) nil) (disp-render-mac macro (img x y color) (append (quote (if)) (list (quote (= frame-i frame-max))) (list (quote (glob-yeet nil))) (list (append (quote (progn)) (list (append (quote |
(env-get 22) |
((glob-yeet)) |
(env-get 23) |
((gif-frame closure (n) (str-merge "./images/frame_" (leading-zeroes n) ".png") nil)) |
(env-get 24) |
((str-merge closure nil (str-join (rest-args)) nil) (image-pair closure (cap0 txt0 fig0 cap1 txt1 fig1) (list (quote image-pair) cap0 txt0 fig0 cap1 txt1 fig1) nil) (intersperse closure (str strs) (match strs (((? s)) s) (((? s) ? ss) (str-merge s str (in |
(env-get 25) |
((evaluation-quota newline (section 3 "set-eval-quota" ((para ("`set-eval-quota` sets the number of evaluation steps that is" "given to each context when given turn to execute by the round-robin" "scheduler.")) (code ((set-eval-quota 30))) nil)) newline h |
(env-get 26) |
((chapter-scheduling section 2 "Scheduling" ((newline (section 3 "set-eval-quota" ((para ("`set-eval-quota` sets the number of evaluation steps that is" "given to each context when given turn to execute by the round-robin" "scheduler.")) (code ((set-eval- |
(env-get 27) |
((num-free newline (section 3 "mem-num-free" ((para ("`mem-num-free` returns the number of free words in the LBM memory." "This is the memory where arrays and strings are stored.")) (code ((mem-num-free))) nil)) newline hline) (table closure (header data) |
(env-get 28) |
((longest-free newline (section 3 "mem-longest-free" ((para ("`mem-longest-free` returns the length in words of the longest" "consecutive sequence of free words in the LBM memory.")) (code ((mem-num-free))) nil)) newline hline)) |
(env-get 29) |
((memory-size newline (section 3 "mem-size" ((para ("`mem-size` returns the size of the LBM memory.")) (code ((mem-size))) nil)) newline hline)) |
(env-get 30) |
((heap-state newline (section 3 "lbm-heap-state" ((para ("`lbm-heap-state` can be used to query information about heap usage.")) (code ((lbm-heap-state (quote get-heap-size)) (lbm-heap-state (quote get-heap-bytes)) (lbm-heap-state (quote get-num-alloc-cel |
(env-get 31) |
((chapter-memory section 2 "Memory" ((newline (section 3 "mem-num-free" ((para ("`mem-num-free` returns the number of free words in the LBM memory." "This is the memory where arrays and strings are stored.")) (code ((mem-num-free))) nil)) newline hline) ( |
env-set
destructively sets an entry in the global environment hashtable.
Example | Result |
(if (eq (env-get 1) nil) (env-set 1 (list '(a . 75))))
(env-get 1) |
((chapter-gc section 2 "GC" ((newline (section 3 "set-gc-stack-size" ((para ("With `set-gc-stack-size` you can change the size of the stack used for heap traversal" "by the garbage collector.")) (code ((set-gc-stack-size 100))) nil)) newline hline))) (to- |
Note that in the example code above there is no guarantee that the symbol a
actually hashes to index 1 in the environment table. So a
is most likely impossible to look up from this environment. The use case for env-set
and env-get
are rather that they are together. Use env-get
to extract index i
from the table, then modify it in some way and end by using env-set
to the same index i
.
local-env-get
can be used to reify, turn into value, the local environment.
Example | Result |
(local-env-get) |
nil |
Example | Result |
(let ((a 50))
(local-env-get)) |
((a . 50)) |
With set-gc-stack-size
you can change the size of the stack used for heap traversal by the garbage collector.
Example | Result |
(set-gc-stack-size 100) |
t |
mem-num-free
returns the number of free words in the LBM memory. This is the memory where arrays and strings are stored.
Example | Result |
(mem-num-free) |
254287 |
mem-longest-free
returns the length in words of the longest consecutive sequence of free words in the LBM memory.
Example | Result |
(mem-num-free) |
254217 |
mem-size
returns the size of the LBM memory.
Example | Result |
(mem-size) |
262144 |
lbm-heap-state
can be used to query information about heap usage.
Example | Result |
(lbm-heap-state 'get-heap-size) |
10000000u |
(lbm-heap-state 'get-heap-bytes) |
80000000u |
(lbm-heap-state 'get-num-alloc-cells) |
11251u |
(lbm-heap-state 'get-num-alloc-arrays) |
866u |
(lbm-heap-state 'get-gc-num) |
1u |
(lbm-heap-state 'get-gc-num-marked) |
3896u |
(lbm-heap-state 'get-gc-num-recovered-cells) |
9996104u |
(lbm-heap-state 'get-gc-num-recovered-arrays) |
0u |
(lbm-heap-state 'get-gc-num-least-free) |
9996104u |
(lbm-heap-state 'get-gc-num-last-free) |
9996104u |
set-eval-quota
sets the number of evaluation steps that is given to each context when given turn to execute by the round-robin scheduler.
Example | Result |
(set-eval-quota 30) |
t |
symtab-size
returns the size of the symbol table in bytes.
Example | Result |
(symtab-size) |
3741u |
symtab-size-flash
returns the size in bytes of the portion of the symbol table that is stored in flash.
Example | Result |
(symtab-size-flash) |
0u |
symtab-size-names
returns the size in bytes of the string names stored in the symbol table.
Example | Result |
(symtab-size-names) |
1575u |
symtab-size-names
returns the size in bytes of the string names stored in the symbol table in flash.
Example | Result |
(symtab-size-names-flash) |
0u |
lbm-version
returns the version of the lbm runtime system.
Example | Result |
(lbm-version) |
(0 30 3) |
is-64bit
returns true if a 64bit version of lbm is running.
Example | Result |
(is-64bit) |
nil |
word-size
returns 4 on 32bit LBM and 8 on 64bits.
Example | Result |
(word-size) |
4 |
This document was generated by LispBM version 0.30.3