Paste: vocab platform suffixes
Author: | erg |
Mode: | factor |
Date: | Sat, 22 Jan 2022 01:37:32 |
Plain Text |
USING: accessors assocs classes continuations init io kernel
kernel.private make math.parser namespaces sequences splitting ;
IN: system
PRIMITIVE: (exit) ( n -- * )
PRIMITIVE: disable-ctrl-break ( -- )
PRIMITIVE: enable-ctrl-break ( -- )
PRIMITIVE: nano-count ( -- ns )
SINGLETONS: x86.32 x86.64 arm.32 arm.64 ppc.32 ppc.64 ;
UNION: x86 x86.32 x86.64 ;
UNION: arm arm.32 arm.64 ;
UNION: ppc ppc.32 ppc.64 ;
: cpu ( -- class ) \ cpu get-global ; foldable
SINGLETONS: windows macosx linux freebsd ;
UNION: bsd freebsd ;
UNION: unix macosx linux freebsd bsd ;
CONSTANT: all-oses { unix bsd windows macosx linux freebsd }
CONSTANT: all-cpus { x86.32 x86.64 arm.32 arm.64 ppc.32 ppc.64 }
: os ( -- class ) \ os get-global ; foldable
: vm-version ( -- string ) \ vm-version get-global ;
: vm-git-label ( -- string ) \ vm-git-label get-global ;
: vm-git-ref ( -- string )
vm-git-label "-" split1-last drop ;
: vm-git-id ( -- string )
vm-git-label "-" split1-last nip ;
: vm-compiler ( -- string ) \ vm-compiler get-global ;
: vm-compile-time ( -- string ) \ vm-compile-time get-global ;
<PRIVATE
CONSTANT: string>cpu-hash H{
{ "x86.32" x86.32 }
{ "x86.64" x86.64 }
{ "arm.32" arm.32 }
{ "arm.64" arm.64 }
{ "ppc.32" ppc.32 }
{ "ppc.64" ppc.64 }
}
CONSTANT: string>os-hash H{
{ "windows" windows }
{ "macosx" macosx }
{ "freebsd" freebsd }
{ "linux" linux }
}
: string>cpu ( str -- class )
string>cpu-hash at ;
: string>os ( str -- class )
string>os-hash at ;
PRIVATE>
: make-platform-suffixes ( oses cpus -- seq )
[ [ name>> ] map ] bi@
[ ]
[ [ [ "-" glue ] curry map ] with map concat ] 2bi 3append ;
MEMO: all-platform-suffixes ( -- seq )
all-oses all-cpus make-platform-suffixes ;
MEMO: my-os-suffixes ( -- seq )
all-oses [ os swap instance? ] filter ;
MEMO: my-cpu-suffixes ( -- seq )
all-cpus [ cpu swap instance? ] filter ;
MEMO: my-platform-suffixes ( -- seq )
my-os-suffixes my-cpu-suffixes make-platform-suffixes ;
: image-path ( -- path ) \ image-path get-global ;
: vm-path ( -- path ) \ vm-path get-global ;
: embedded? ( -- ? ) OBJ-EMBEDDED special-object ;
: version-info ( -- str )
[
"Factor " % vm-version %
" " % cpu name>> %
" (" % build # ", " %
vm-git-ref % "-" %
vm-git-id 10 short head % ", " %
vm-compile-time % ")\n[" %
vm-compiler % "] on " % os name>> %
] "" make ;
: exit ( n -- * )
[ do-shutdown-hooks (exit) ] ignore-errors
[ "Unexpected error during shutdown!" print flush ] ignore-errors
255 (exit) ;
my-platform-suffixes ...
{ "unix" "macosx" "x86.64" "unix-x86.64" "macosx-x86.64" }
Author: | erg |
Mode: | factor |
Date: | Sat, 22 Jan 2022 01:41:50 |
Plain Text |
CONSTANT: all-oses { bsd unix windows macosx linux freebsd }
CONSTANT: all-cpus { x86 arm ppc x86.32 x86.64 arm.32 arm.64 ppc.32 ppc.64 }
Author: | erg |
Mode: | factor |
Date: | Sat, 22 Jan 2022 01:43:35 |
Plain Text |
all-platform-suffixes ...
{
"bsd"
"unix"
"windows"
"macosx"
"linux"
"freebsd"
"x86"
"arm"
"ppc"
"x86.32"
"x86.64"
"arm.32"
"arm.64"
"ppc.32"
"ppc.64"
"bsd-x86"
"unix-x86"
"windows-x86"
"macosx-x86"
"linux-x86"
"freebsd-x86"
"bsd-arm"
"unix-arm"
"windows-arm"
"macosx-arm"
"linux-arm"
"freebsd-arm"
"bsd-ppc"
"unix-ppc"
"windows-ppc"
"macosx-ppc"
"linux-ppc"
"freebsd-ppc"
"bsd-x86.32"
"unix-x86.32"
"windows-x86.32"
"macosx-x86.32"
"linux-x86.32"
"freebsd-x86.32"
"bsd-x86.64"
"unix-x86.64"
"windows-x86.64"
"macosx-x86.64"
"linux-x86.64"
"freebsd-x86.64"
"bsd-arm.32"
"unix-arm.32"
"windows-arm.32"
"macosx-arm.32"
"linux-arm.32"
"freebsd-arm.32"
"bsd-arm.64"
"unix-arm.64"
"windows-arm.64"
"macosx-arm.64"
"linux-arm.64"
"freebsd-arm.64"
"bsd-ppc.32"
"unix-ppc.32"
"windows-ppc.32"
"macosx-ppc.32"
"linux-ppc.32"
"freebsd-ppc.32"
"bsd-ppc.64"
"unix-ppc.64"
"windows-ppc.64"
"macosx-ppc.64"
"linux-ppc.64"
"freebsd-ppc.64"
}
New Annotation