Skip to content

Latest commit

 

History

History
1384 lines (870 loc) · 16.4 KB

runtimeref.md

File metadata and controls

1384 lines (870 loc) · 16.4 KB

LispBM Runtime Extensions Reference Manual

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.

Errors

hide-trapped-error

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

show-trapped-errors

If you have hidden trapped errors they can be toggled back to being showed again using this function.

Example Result
(show-trapped-error)
t

Environments

env-get

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

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

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))

GC

set-gc-stack-size

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

Memory

mem-num-free

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

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

mem-size returns the size of the LBM memory.

Example Result
(mem-size)
262144

lbm-heap-state

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

Scheduling

set-eval-quota

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

Symbol table

symtab-size

symtab-size returns the size of the symbol table in bytes.

Example Result
(symtab-size)
3741u

symtab-size-flash

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

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-flash

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

Version

lbm-version

lbm-version returns the version of the lbm runtime system.

Example Result
(lbm-version)
(0 30 3)

is-64bit

is-64bit returns true if a 64bit version of lbm is running.

Example Result
(is-64bit)
nil

word-size

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