S7C(1)

πŸ“¦ version 05.20240322, in alpine 3.24

🌸 S7C(1) β€” the Seed7 compiler, bestie edition 🌸

okay so real talk, this is the manual page for s7c, and yeah it lives in the SEED7 COMPILER section of the manual. she's giving compiler main character energy and honestly? she ate. let's get into it 🫢


✨ NAME ✨

s7c β€” the compiler for the Seed7 programming language. that's the whole vibe. periodt πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

s7c [ options ] source

literally just options then your source file. iconic, no notes ✨


πŸ’– DESCRIPTION πŸ’–

so s7c invokes the Seed7 compiler. and Seed7 itself? it's an extensible general purpose programming language β€” say that three times fast, i dare you 😭

it's a higher level language compared to Ada, C/C++ and Java. highkey built different. its major features include, and i'm quoting the whole list because every single one is a slay:

  • user defined statements and operators πŸ‘‘
  • abstract data types
  • templates without special syntax (no cursed angle brackets, we love to see it)
  • OO with interfaces and multiple dispatch πŸ¦‹
  • statically typed
  • interpreted or compiled (she can do both, versatile queen)
  • portability

the documentation of Seed7 and many examples can be found in /usr/share/doc/seed7. go read it, bestie, it's right there πŸŽ€


πŸ’… OPTIONS πŸ’…

  • -? β€” writes the Seed7 compiler usage. when in doubt, ask her politely ✨
  • -On β€” tells the C compiler to optimize with level n, where n is between 1 and 3. numbers, we love them πŸ’œ
  • -O β€” equivalent to -O1. yes it's a shortcut, yes it's still valid, no i will not be taking questions πŸ“
  • -S β€” specifies the stack size of the executable (e.g.: -S 16777216). big stack energy πŸ”₯
  • -b β€” specifies the directory of the Seed7 runtime libraries (e.g.: -b ../bin). point her at the libs, she'll handle the rest 🧚
  • -c β€” specifies the configuration (C compiler, etc.) to be used (e.g.: -c emcc). yes queen, pick your fighter πŸ’€
  • -e β€” generates code which sends a signal if an uncaught exception occurs. this option allows debuggers to handle uncaught Seed7 exceptions. ngl that's kind of a serve for debugging 🌸
  • -flto β€” enables link time optimization. big brain hours 🌈
  • -g β€” tells the C compiler to generate an executable with debug information. this way the debugger will refer to Seed7 source files and line numbers. and if you want debug information that refers to the temporary C program instead, use -g-debug_c. two moods, both valid πŸ’–
  • -l β€” adds a directory to the include library search path (e.g.: -l ../lib). more paths more problems? no, more paths more possibilities ✨
  • -ocn β€” optimizes the generated C code with level n, where n is between 0 and 3. e.g.: -oc3. see the whole breakdown below, i gotchu πŸ‘‘
  • -p β€” activates simple function profiling. know where your time goes, bestie ⭐
  • -sx β€” suppresses the checks specified with x. e.g.: -sr or -sro. the full menu of x letters is down below πŸŽ€
  • -tx β€” sets the runtime trace level to x. e.g.: -te. also listed out below πŸ¦‹
  • -wn β€” specifies the warning level n. e.g.: -w2. levels below, keep scrolling πŸ’œ

πŸ”₯ OPTIMIZATION LEVEL FOR GENERATED C CODE πŸ”₯

the option -ocn can optimize generated C code with level n. these are the supported levels for generated C code, and yes i'm giving you all of them:

  • 0 β€” do no optimizations with constants. chill, unbothered, moisturized 🌸
  • 1 β€” use literals and named constants to simplify expressions. (default) β€” this is the one she picks if you don't say anything πŸŽ€
  • 2 β€” evaluate constant parameter expressions to simplify expressions. now we're cooking ✨
  • 3 β€” like -oc2 and additionally evaluate all constant expressions. go big or go home πŸ”₯

πŸŽ€ SUPPRESSED CHECKS πŸŽ€

the option -sx can suppress checks. the checks x are specified with letters from this list:

  • d β€” suppress the generation of checks for integer division by zero. (bold move, but ok πŸ’€)
  • i β€” suppress the generation of index checks (e.g. string, array).
  • o β€” suppress the generation of integer overflow checks.
  • r β€” suppress the generation of range checks.
okay so real talk β€” these are suppressing safety checks. that's literally what the flag does. i'm not adding lore, i'm just saying: read what you're turning off before you turn it off, bestie 😭

🌈 TRACE LEVEL 🌈

the option -tx can set the trace level. the trace levels x are specified with letters from this list:

  • d β€” trace dynamic calls
  • e β€” trace exceptions and handlers
  • f β€” trace functions
  • s β€” trace signals

pick your letter, watch the tea unfold πŸ“


⭐ WARNING LEVEL ⭐

the option -wn can set the warning level to n. these levels are supported:

  • 0 β€” omit warnings. ignorance is bliss, i guess πŸ™ˆ
  • 1 β€” write normal warnings. (default) β€” the standard amount of "hey bestie, heads up" πŸ’–
  • 2 β€” write warnings for raised exceptions. she's thorough, we respect it πŸ‘‘

🧚 FILES 🧚

  • /usr/share/doc/seed7/manual.txt β€” the manual for the Seed7 programming language.
  • /usr/share/doc/seed7/manual.htm β€” HTML version of the Seed7 manual. (yes, .htm, not .html β€” copy it exactly, don't @ me πŸ’…)
  • /usr/bin/s7c β€” the Seed7 compiler herself. the main character πŸ‘‘
  • /usr/lib/seed7/lib β€” directory of the include libraries.
  • /usr/lib/seed7/bin β€” directory of the object libraries.

πŸ¦‹ HOMEPAGE πŸ¦‹

http://seed7.sourceforge.net

go say hi 🌸


πŸ’œ AUTHOR πŸ’œ

Seed7 was written by Thomas Mertes <thomas.mertes@gmx.at>.

this manual page was written by Thomas Mertes <thomas.mertes@gmx.at>. (same icon, writing his own docs β€” self-sufficient legend ✨)


🫢 SEE ALSO 🫢

  • s7(1) β€” the other one, go read it too, iykyk πŸ’–

okay that's the whole page, you're officially educated πŸ’… and a cute little sign-off for the record: this is Version 3.2, dated September 12, 2023 β€” go compile something iconic, bestie πŸŽ€βœ¨πŸ¦‹

πŸ“¦ where this page comes from