M: remote-channel from
[ id>> from-message boa ] keep send-message ;
-[
+STARTUP-HOOK: [
H{ } clone \ remote-channels set-global
start-channel-node
-] "channel-registry" add-startup-hook
+]
frameworks [ V{ } clone ] initialize
-[ frameworks get [ load-framework ] each ] "cocoa" add-startup-hook
+STARTUP-HOOK: [ frameworks get [ load-framework ] each ]
SYNTAX: FRAMEWORK: scan-token [ load-framework ] [ frameworks get push ] bi ;
main-vocab "run" set
] with-global ;
-[
+STARTUP-HOOK: [
H{ } user-init-errors set-global
default-cli-args
-] "command-line" add-startup-hook
+]
{ "debugger" "command-line" } "command-line.debugger" require-when
: stop-node ( -- )
f local-node get insecure>> send-remote-message ;
-[
+STARTUP-HOOK: [
H{ } clone \ registered-remote-threads set-global
H{ } clone \ thread-connections set-global
-] "remote-thread-registry" add-startup-hook
+]
: event-stream-counter ( -- n )
\ event-stream-counter counter ;
-[
+STARTUP-HOOK: [
event-stream-callbacks
[ [ drop expired? ] H{ } assoc-reject-as ] change-global
-] "core-foundation" add-startup-hook
+]
: add-event-source-callback ( quot -- id )
event-stream-counter <alien>
] change-timers drop ;
SYMBOL: thread-timer
-[ f thread-timer set-global ]
-"core-foundation.run-loop" add-startup-hook
+
+STARTUP-HOOK: [ f thread-timer set-global ]
: (reset-thread-timer) ( timer -- )
sleep-time
: cached-line ( font string -- line )
cached-lines get-global [ <line> ] 2cache ;
-[ <cache-assoc> cached-lines set-global ] "core-text" add-startup-hook
+STARTUP-HOOK: [ <cache-assoc> cached-lines set-global ]
: cache-font-metrics ( font -- metrics )
[ name>> ] [ size>> ] [ font-traits ] tri (cache-font-metrics) ;
-[
+STARTUP-HOOK: [
\ (cache-font) reset-memoized
\ (cache-font-metrics) reset-memoized
-] "core-text.fonts" add-startup-hook
+]
MEMO: enable-popcnt? ( -- ? )
popcnt? "disable-popcnt" get not and ;
-[ { sse-version enable-popcnt? } [ reset-memoized ] each ]
-"cpu.x86.features" add-startup-hook
+STARTUP-HOOK: [
+ { sse-version enable-popcnt? } [ reset-memoized ] each
+]
: sse-string ( version -- string )
{
{ [ os windows? ] [ "environment.windows" require ] }
} cond
-[
- "FACTOR_ROOTS" os-env
- [
+STARTUP-HOOK: [
+ "FACTOR_ROOTS" os-env [
os windows? ";" ":" ? split
[ add-vocab-root ] each
] when*
-] "environment" add-startup-hook
+]
: reset-game-input ( -- )
(reset-game-input) ;
-[ reset-game-input ] "game-input" add-startup-hook
-
PRIVATE>
+STARTUP-HOOK: reset-game-input
+
ERROR: game-input-not-open ;
: open-game-input ( -- )
] unless
game-input-opened [ 1 + ] change-global
reset-mouse ;
+
: close-game-input ( -- )
game-input-opened [
dup zero? [ game-input-not-open ] when
freebsd set-io-backend
-[ start-signal-pipe-thread ]
-"io.backend.unix:signal-pipe-thread" add-startup-hook
+STARTUP-HOOK: start-signal-pipe-thread
linux set-io-backend
-[ start-signal-pipe-thread ] "io.backend.unix:signal-pipe-thread" add-startup-hook
+STARTUP-HOOK: start-signal-pipe-thread
macosx set-io-backend
-[ start-signal-pipe-thread ]
-"io.backend.unix:signal-pipe-thread" add-startup-hook
+STARTUP-HOOK: start-signal-pipe-thread
{ [ os unix? ] [ "io.files.temp.unix" ] }
} cond require
-[
+STARTUP-HOOK: [
default-temp-directory dup make-directories
current-temp-directory set-global
default-cache-directory dup make-directories
current-cache-directory set-global
-] "io.files.temp" add-startup-hook
+]
5 wait-delay set-global
[ wait-loop t ] "Process wait" spawn-server drop ;
-[
+STARTUP-HOOK: [
H{ } clone processes set-global
start-wait-thread
-] "io.launcher" add-startup-hook
+]
: process-started ( process handle -- )
>>handle
MEMO: ipv6-supported? ( -- ? )
[ "::1" 0 <inet6> binary <server> dispose t ] [ drop f ] recover ;
-[ \ ipv6-supported? reset-memoized ]
-"io.sockets:ipv6-supported?" add-startup-hook
+STARTUP-HOOK: [ \ ipv6-supported? reset-memoized ]
GENERIC: resolve-host ( addrspec -- seq )
: stop-io-thread ( -- )
f io-thread-running? set-global ;
-[ start-io-thread ] "io.thread" add-startup-hook
+STARTUP-HOOK: start-io-thread
"Log server" spawn-server
"log-server" set-global ;
-[
+STARTUP-HOOK: [
H{ } clone log-files set-global
log-server
-] "logging" add-startup-hook
+]
: reset-gl-function-pointers ( -- )
100 <hashtable> +gl-function-pointers+ set-global ;
-[ reset-gl-function-pointers ] "opengl.gl" add-startup-hook
+STARTUP-HOOK: reset-gl-function-pointers
+
reset-gl-function-pointers
reset-gl-function-number-counter
GL_MODELVIEW glMatrixMode
glLoadIdentity ;
-[ f gl-scale-factor set-global ] "opengl" add-startup-hook
+STARTUP-HOOK: [ f gl-scale-factor set-global ]
t ssl-initialized? set-global
] unless ;
-[ f ssl-initialized? set-global ] "openssl" add-startup-hook
+STARTUP-HOOK: [ f ssl-initialized? set-global ]
: default-mersenne-twister ( -- mersenne-twister )
nano-count <mersenne-twister> ;
-[
+STARTUP-HOOK: [
default-mersenne-twister random-generator set-global
-] "bootstrap.random" add-startup-hook
+]
HINTS: M\ unix-random random-bytes* { fixnum unix-random } ;
-[
- "/dev/random" <unix-random> &dispose secure-random-generator set-global
- "/dev/urandom" <unix-random> &dispose system-random-generator set-global
-] "random.unix" add-startup-hook
+STARTUP-HOOK: [
+ "/dev/random" <unix-random> &dispose
+ secure-random-generator set-global
+
+ "/dev/urandom" <unix-random> &dispose
+ system-random-generator set-global
+]
[ first2 <windows-crypto-context> ] attempt-all
] [ 2drop f ] recover ;
-[
+STARTUP-HOOK: [
{
${ MS_ENHANCED_PROV PROV_RSA_FULL }
${ MS_DEF_PROV PROV_RSA_FULL }
${ MS_STRONG_PROV PROV_RSA_FULL }
${ MS_ENH_RSA_AES_PROV PROV_RSA_AES }
} try-crypto-providers secure-random-generator set-global
-] "random.windows" add-startup-hook
+]
PRIVATE>
-[ init-threads ] "threads" add-startup-hook
+STARTUP-HOOK: init-threads
drop [ null? not ] [ not ] bi or
[ f crossref set-global ] when ;
-[ invalidate-crossref add-definition-observer ] "tools.crossref" add-startup-hook
+STARTUP-HOOK: [ invalidate-crossref add-definition-observer ]
PRIVATE>
[ [ check-deprecations ] each ]
[ drop initialize-deprecation-notes ] if ;
-[ deprecation-observer add-definition-observer ]
-"tools.deprecation" add-startup-hook
+STARTUP-HOOK: [ deprecation-observer add-definition-observer ]
initialize-deprecation-notes
[ cached-layout metrics>> ]
if-empty ;
-[
+STARTUP-HOOK: [
\ (cache-font-description) reset-memoized
<cache-assoc> cached-layouts set-global
-] "ui.text.pango" add-startup-hook
+]
pango-renderer font-renderer set-global
\ show-error-list H{ { +nullary+ t } } define-command
-[
+STARTUP-HOOK: [
f <model> 100 milliseconds <delay> error-list-model set-global
error-list-updater add-error-observer
-] "ui.tools.error-list" add-startup-hook
+]
M: object close-window
find-world [ ungraft ] when* ;
-[
+STARTUP-HOOK: [
f ui-running set-global
<flag> ui-notify-flag set-global
-] "ui" add-startup-hook
+]
HOOK: resize-window ui-backend ( world dim -- )
M: object resize-window 2drop ;
drop dup forgot-vocab? [ reset-vocab-cache ] [ drop ] if
reset-disk-cache ;
-[
+STARTUP-HOOK: [
f changed-vocabs set-global
cache-observer add-vocab-observer
-] "vocabs.cache" add-startup-hook
+]
HS{ } clone changed-vocabs set-global
loaded-vocab-names [ changed-vocab ] each ;
-[
+STARTUP-HOOK: [
"-no-monitors" (command-line) member? [
[ drop ] add-vocab-root-hook set-global
f changed-vocabs set-global
vocab-roots get [ start-vocab-monitor ] each
[ start-vocab-monitor ] add-vocab-root-hook set-global
] if
-] "vocabs.refresh.monitor" add-startup-hook
+]
+live-wrappers+ get-global [ (allocate-wrapper) ] each
H{ } +wrapped-objects+ set-global ;
-[ com-startup-hook ] "windows.com.wrapper" add-startup-hook
+STARTUP-HOOK: com-startup-hook
PRIVATE>
define-guid-constants
define-format-constants ;
-[ define-constants ] "windows.directx.dinput.constants" add-startup-hook
+STARTUP-HOOK: define-constants
: uninitialize ( variable quot -- )
'[ _ when* f ] change-global ; inline
: reject-files ( -- )
world get world-reject-files ;
-[
- f \ init-message-filter set-global
-] "init-dropfiles" add-startup-hook
+STARTUP-HOOK: [ f \ init-message-filter set-global ]
{ [ name>> ] [ size>> ] [ bold?>> ] [ italic?>> ] } cleave
(cache-font) ;
-[
+STARTUP-HOOK: [
\ (cache-font) reset-memoized
\ windows-fonts reset-memoized
-] "windows.fonts" add-startup-hook
+]
: TEXTMETRIC>metrics ( TEXTMETRIC -- metrics )
[ metrics new 0 >>width ] dip {
SYMBOL: gdi-token
-[ start-gdi+ gdi-token set-global ] "windows.gdiplus" add-startup-hook
-[ gdi-token get-global [ stop-gdi+ ] when* ] "windows.gdiplus" add-shutdown-hook
+STARTUP-HOOK: [ start-gdi+ gdi-token set-global ]
+
+SHUTDOWN-HOOK: [ gdi-token get-global [ stop-gdi+ ] when* ]
] with-memory-dc
] unless image>> ;
-[ <cache-assoc> cached-script-strings set-global ]
-"windows.uniscribe" add-startup-hook
+STARTUP-HOOK: [ <cache-assoc> cached-script-strings set-global ]
: shutdown-winsock ( -- ) WSACleanup winsock-return-check ;
-[ init-winsock ] "windows.winsock" add-startup-hook
-[ shutdown-winsock ] "windows.winsock" add-shutdown-hook
+STARTUP-HOOK: init-winsock
+SHUTDOWN-HOOK: shutdown-winsock
! cleared on startup.
SYMBOL: callbacks
-[ H{ } clone callbacks set-global ] "alien" add-startup-hook
+STARTUP-HOOK: [ H{ } clone callbacks set-global ]
! Used by compiler.codegen to wrap callback bodies
: do-callback ( callback-quot wait-quot: ( callback -- ) -- )
: special-object>string ( n -- str )
special-object utf8 alien>string ;
-[
+STARTUP-HOOK: [
OBJ-CPU special-object>string string>cpu \ cpu set-global
OBJ-OS special-object>string string>os \ os set-global
OBJ-VM-VERSION special-object>string \ vm-version set-global
OBJ-VM-GIT-LABEL special-object>string \ vm-git-label set-global
OBJ-VM-COMPILER special-object>string \ vm-compiler set-global
OBJ-VM-COMPILE-TIME special-object>string \ vm-compile-time set-global
-] "alien.strings" add-startup-hook
+]
GENERIC: definitions-changed ( set obj -- )
-[ V{ } clone definition-observers set-global ]
-"compiler.units" add-startup-hook
+STARTUP-HOOK: [
+ V{ } clone definition-observers set-global
-! This goes here because vocabs cannot depend on init
-[ V{ } clone vocab-observers set-global ]
-"vocabs" add-startup-hook
+ ! This goes here because vocabs cannot depend on init
+ V{ } clone vocab-observers set-global
+]
: add-definition-observer ( obj -- )
definition-observers get push ;
cleanup
] with-variables ; inline
-[
+STARTUP-HOOK: [
HS{ } clone disposables set-global
V{ } clone always-destructors set-global
V{ } clone error-destructors set-global
-] "destructors" add-startup-hook
+]
-[
+SHUTDOWN-HOOK: [
do-always-destructors
do-error-destructors
-] "destructors" add-shutdown-hook
+]
io-backend set-global init-io init-stdio
"io.files" startup-hooks get at call( -- ) ;
-[ init-io embedded? [ init-stdio ] unless ]
-"io.backend" add-startup-hook
+STARTUP-HOOK: [ init-io embedded? [ init-stdio ] unless ]
] map-find drop
[ image-path parent-directory ] unless* "resource-path" set-global ;
-[
+STARTUP-HOOK: [
cwd current-directory set-global
OBJ-IMAGE special-object alien>native-string \ image-path set-global
OBJ-EXECUTABLE special-object alien>native-string \ vm-path set-global
init-resource-path
-] "io.files" add-startup-hook
+]
SYMBOL: error-observers
-[
- V{ } clone error-observers set-global
-] "source-files.errors" add-startup-hook
+STARTUP-HOOK: [ V{ } clone error-observers set-global ]
: add-error-observer ( observer -- )
error-observers get push ;
"resource:work"
}
-[
+STARTUP-HOOK: [
default-vocab-roots V{ } like vocab-roots set-global
-
[ drop ] add-vocab-root-hook set-global
-] "vocabs.loader" add-startup-hook
+]
: add-vocab-root ( root -- )
trim-tail-separators dup vocab-roots get ?adjoin
SYMBOLS: play-label-image pause-label-image gadget-audio-engine ;
-[
+STARTUP-HOOK: [
f play-label-image set-global
f pause-label-image set-global
f gadget-audio-engine set-global
-] "audio.gadget" add-startup-hook
+]
: initialize-audio-gadgets ( -- )
gadget-audio-engine get-global [
SYMBOLS: latest-sources last-built-sources ;
-[
+STARTUP-HOOK: [
f latest-sources set-global
f last-built-sources set-global
-] "mason.updates" add-startup-hook
+]
: latest-boot-image ( -- boot-image )
target-boot-image-name
: python-dll-loaded? ( -- ? )
"Py_IsInitialized" "python" dlsym? ;
-[ python-dll-loaded? [ py-initialize ] when ] "python" add-startup-hook
-[ python-dll-loaded? [ py-finalize ] when ] "python" add-shutdown-hook
+STARTUP-HOOK: [ python-dll-loaded? [ py-initialize ] when ]
+SHUTDOWN-HOOK: [ python-dll-loaded? [ py-finalize ] when ]
5 minutes site-watcher-frequency set-global
SYMBOL: running-site-watcher
-[ f running-site-watcher set-global ] "site-watcher" add-startup-hook
+STARTUP-HOOK: [ f running-site-watcher set-global ]
<PRIVATE
sodium_bin2base64 0 = [ call-fail ] when b64 ascii decode unclip-last
CHAR: \0 = [ call-fail ] unless ;
-[ sodium-init ] "sodium" add-startup-hook
+STARTUP-HOOK: sodium-init