THEME_D_LINK(1)

πŸ“¦
version 7.3.3 Β· 3 versions
, in ubuntu resolute, ubuntu stonking

okay bestie, welcome to theme-d-link β€” the Theme-D linker, and honestly? she's the moment. this is the page for the <pink>THEME_D_LINK(1)</pink> manual, section 1, and we're gonna get you fully fluent. no cap.


✨ NAME ✨

theme-d-link β€” the Theme-D linker. that's it, that's the whole vibe. πŸ’…


🌸 SYNOPSIS 🌸

theme-d-link [ OPTION ] ...  FILE

one FILE, as many OPTIONs as your heart desires. slay.


πŸ¦‹ DESCRIPTION πŸ¦‹

okay so here's the tea. theme-d-link takes your Theme-D pseudocode file FILE, plus all the Theme-D libraries it uses, and links them all together into Guile bytecode. periodt.

the default bytecode filename? you get it by appending .go to the basename of FILE. cute, right?

here's the lil process, bestie: the theme-d-link command creates an intermediate file, and that intermediate file is either in Guile Tree-IL or in Scheme. then it uses Guile to compile that into bytecode. the default suffix of the intermediate file is either .tree-il or .scm. ✨

and by default? both the output file and the intermediate file get dropped into the directory where you invoked the theme-d-link command. so like, wherever you were standing when you typed it. 🫢


πŸ‘‘ OPTIONS πŸ‘‘

  • -o, --output=OUTPUTFILE β€” specify the compilation output file. tell her where to put the goods. πŸ’–
  • -m, --module-path=PATH β€” specify the search path for Theme-D modules. the path should be a list of directories separated with :'s. you can prefix or suffix the list with a colon in order to include the default Theme-D library path in the search path. (the colon is giving "and also the usual, pls" πŸŽ€)
  • -l, --message-level=LEVEL β€” specify the message level of the compiler. the level has to be an integer number from 0 to 3. value 0 means no output and value 3 the most verbose output. so like 0 is silent treatment, 3 is oversharing. 😭
  • -n, --intermediate-file=INTFILE β€” specify the intermediate filename.
  • -i, --intermediate-language=LANGUAGE β€” specify the intermediate language. value LANGUAGE has to be either tree-il, tree-il-3.0, tree-il-2.2, scheme, or scheme-no-opt. when value tree-il is used the Tree-IL version for which Theme-D has been configured is used. ✨
  • -x MODULE β€” link (load) module MODULE into the target program. the syntax of MODULE is (sym1...symn) in double quotes. yes, quotes, don't forget em.
  • --no-final-compilation β€” do not compile the intermediate file with guild compile.
  • --no-strip β€” do not strip away unused code.
  • --no-factorization β€” do not factorize the type expressions out of procedure implementations.
  • --no-weak-assertions β€” do not check ordinary assertions. strong assertions are always checked. so like, you can skip the weak ones but the strong ones are the main character and they stay. πŸ‘‘
  • --backtrace β€” print backtrace on compilation error. for when things go wrong and you need the receipts.
  • --pretty-print β€” pretty print the pseudocode output. aesthetic first. πŸ’…
  • --no-verbose-errors β€” less information in the error messages.
  • --verbose-typechecks β€” more information for runtime type errors.
  • --keep-intermediate β€” keep the intermediate Tree-IL or Scheme file. by default the intermediate file is deleted. so if you wanna snoop, say so. πŸ™ˆ
  • --link-to-cache β€” link the target bytecode file into the guile cache.
  • --runtime-pretty-backtrace β€” generate code to support runtime pretty printed backtraces.
  • --no-unlinked-procedure-names β€” do not generate code for reporting unlinked procedure names.
  • --module-debug-output β€” print debug messages when a module body linkage is started and ended.
  • --show-inst-number β€” show the numbers for instantiated expressions.
  • --check-all-primitives β€” check that primitive procedure result values match the result types for all primitives, including those defined with unchecked-prim-proc. full audit energy, we love to see it.
  • --duplicates=symbols β€” set the values passed to default-duplicate-binding-handler in the target program. if there are several symbols enclose them in quotes.
  • --split β€” split the linker output.
  • --split-dir=dir β€” set the directory where to put the split linker output.
  • --split-basename=name β€” split the basename for split linker output files.
  • --guile-opt-level=level β€” set the optimization level for final guile compilation. the default is 1.
  • --extra-guild-options=options β€” set extra guild options for the final compilation. if there are several options enclose the in quotes. (yes, the original says "enclose the in quotes", we're keeping it, it's iconic πŸ’€)
  • --no-inline-constructors β€” do not inline constructors in the linked code.
  • --no-optimization β€” use the nonoptimized Guile backend. this option has no effect if the Tree-IL backend is used. so don't bother if you're on Tree-IL, bestie.
  • --no-pair-class-optimization β€” do not optimize pair class typechecking.
  • --no-proc-arg-opt β€” do not optimize procedure arguments by inlining.
  • --unit-type=name β€” specify the source file unit type explicitly. the unit type has to be one of proper-program, script, body, or interface.
  • --module β€” link the file modularly to a Guile bytecode module.
  • --plugin β€” link the file modularly to a Theme-D plugin. this option implies --module. the file has to be a Theme-D module body. πŸŽ€
  • --allow-dupl-foreign-classes β€” do not give an error if the same foreign class is used to implement several Theme-D foreign class definitions.
  • --guile-target-path=DIRS β€” set the Guile library path for final compilation. the argument DIRS has to be a colon-separated list of directories. you can prefix or suffix the list with a colon in order to include the default path in the search path.
  • --empty-guile-target-path β€” set GUILE_LOAD_COMPILED_PATH to an empty string. normally the value of GUILE_LOAD_COMPILED_PATH is not modified if no Guile target path is given.
  • -M, --full-module-path=DIRS β€” this option is equivalent to -m DIRS --guile-target-path=DIRS. two birds, one flag, iconic.
  • --version β€” show the Theme-D version number and exit. πŸ‘‘

🌈 TARGET PLATFORMS 🌈

the following intermediate languages are available:

  • tree-il β€” Guile Tree-IL 3.0.
  • scheme β€” Guile Scheme 3.0.
  • scheme0 β€” Guile Scheme 3.0 without optimizations.

🧚 ENVIRONMENT 🧚

  • THEME_D_CONFIG_FILE β€” if this variable is defined its value is used as the Theme-D configuration file instead of the default configuration file. so you can point her at your own config, your rules. πŸ’œ

πŸ“ FILES πŸ“

  • /etc/theme-d-config β€” the Theme-D configuration file.
  • ~/.theme-d-config β€” the Theme-D configuration file. this file should be normally present only if you use Theme-D in local mode.

⭐ SEE ALSO ⭐

go read the girlies too, they're all connected. iykyk. πŸ¦‹


ngl bestie, that's the whole page. every flag, every path, every colon, every quote β€” all of it, untouched. now go link something and make it everybody's problem. πŸ’–βœ¨

this lil love letter comes to you from GNU, dated 2022-04-25 β€” mwah, xoxo, go compile something gorgeous. πŸ’…πŸŽ€πŸŒΈ

πŸ“¦ where this page comes from