diff --git a/README.md b/README.md index 639cffc..3c74e73 100644 --- a/README.md +++ b/README.md @@ -10,4 +10,5 @@ ___ ## Site +july.lol ___ diff --git a/sleepeesoftware.fr/assets/Binary.gif b/sleepeesoftware.fr/assets/Binary.gif new file mode 100644 index 0000000..a7474da Binary files /dev/null and b/sleepeesoftware.fr/assets/Binary.gif differ diff --git a/sleepeesoftware.fr/assets/Boykisser.gif b/sleepeesoftware.fr/assets/Boykisser.gif new file mode 100644 index 0000000..858c722 Binary files /dev/null and b/sleepeesoftware.fr/assets/Boykisser.gif differ diff --git a/sleepeesoftware.fr/assets/MINECRSAFT.gif b/sleepeesoftware.fr/assets/MINECRSAFT.gif new file mode 100644 index 0000000..7b659e4 Binary files /dev/null and b/sleepeesoftware.fr/assets/MINECRSAFT.gif differ diff --git a/sleepeesoftware.fr/assets/NEZUWUstarterpack.jpg b/sleepeesoftware.fr/assets/NEZUWUstarterpack.jpg new file mode 100644 index 0000000..914fe4d Binary files /dev/null and b/sleepeesoftware.fr/assets/NEZUWUstarterpack.jpg differ diff --git a/sleepeesoftware.fr/assets/Nezuwu.jpg b/sleepeesoftware.fr/assets/Nezuwu.jpg new file mode 100644 index 0000000..8fa5dee Binary files /dev/null and b/sleepeesoftware.fr/assets/Nezuwu.jpg differ diff --git a/sleepeesoftware.fr/assets/SexyBear.jpg b/sleepeesoftware.fr/assets/SexyBear.jpg new file mode 100644 index 0000000..1406908 Binary files /dev/null and b/sleepeesoftware.fr/assets/SexyBear.jpg differ diff --git a/sleepeesoftware.fr/assets/femboylober.gif b/sleepeesoftware.fr/assets/femboylober.gif new file mode 100644 index 0000000..27dc8e9 Binary files /dev/null and b/sleepeesoftware.fr/assets/femboylober.gif differ diff --git a/sleepeesoftware.fr/assets/minecrafcome.gif b/sleepeesoftware.fr/assets/minecrafcome.gif new file mode 100644 index 0000000..f58e1aa Binary files /dev/null and b/sleepeesoftware.fr/assets/minecrafcome.gif differ diff --git a/sleepeesoftware.fr/assets/nyan.gif b/sleepeesoftware.fr/assets/nyan.gif new file mode 100644 index 0000000..33770af Binary files /dev/null and b/sleepeesoftware.fr/assets/nyan.gif differ diff --git a/sleepeesoftware.fr/assets/pantera.gif b/sleepeesoftware.fr/assets/pantera.gif new file mode 100644 index 0000000..f67b2e0 Binary files /dev/null and b/sleepeesoftware.fr/assets/pantera.gif differ diff --git a/sleepeesoftware.fr/assets/retrogame.gif b/sleepeesoftware.fr/assets/retrogame.gif new file mode 100644 index 0000000..1955e93 Binary files /dev/null and b/sleepeesoftware.fr/assets/retrogame.gif differ diff --git a/sleepeesoftware.fr/assets/steam.gif b/sleepeesoftware.fr/assets/steam.gif new file mode 100644 index 0000000..1f4fe29 Binary files /dev/null and b/sleepeesoftware.fr/assets/steam.gif differ diff --git a/sleepeesoftware.fr/assets/uwu.gif b/sleepeesoftware.fr/assets/uwu.gif new file mode 100644 index 0000000..913e5ff Binary files /dev/null and b/sleepeesoftware.fr/assets/uwu.gif differ diff --git a/sleepeesoftware.fr/assets/warning.gif b/sleepeesoftware.fr/assets/warning.gif new file mode 100644 index 0000000..0735a2a Binary files /dev/null and b/sleepeesoftware.fr/assets/warning.gif differ diff --git a/sleepeesoftware.fr/css/base.css b/sleepeesoftware.fr/css/base.css deleted file mode 100644 index 18c78ff..0000000 --- a/sleepeesoftware.fr/css/base.css +++ /dev/null @@ -1,154 +0,0 @@ -body { - margin: 0; - font-family: 'Orbitron', sans-serif; - color: var(--text-color); - background: var(--background-color); - overflow-x: hidden; -} - -body::before { - content: ""; - position: fixed; - top: 0; left: 0; - width: 100%; - height: 100%; - z-index: 2; - pointer-events: none; - background: url('/assets/RpdC.gif') repeat; - opacity: 0.05; - mix-blend-mode: screen; -} - -body::after { - content: ""; - position: fixed; - top: 0; left: 0; - width: 100%; - height: 100%; - z-index: 1; - pointer-events: none; - background: repeating-linear-gradient( - 0deg, - --scanline-color 0px, - --scanline-color 1px, - transparent 1px, - transparent 4px - ); - animation: scanlines 0.1s linear infinite; -} - -main section h2 { - color: var(--terminal-border); - text-shadow: 0 0 5px var(--terminal-border); - margin-top: 2rem; - text-align: center; -} - -h3 { - text-align: center; -} - -.foreground-container { - max-width: 960px; - min-height: 720px; - margin: 0 auto; - background-color: rgba(0, 0, 0, 0.85); - box-shadow: 0 0 20px var(--secondary-color); - padding: 2rem; - position: relative; - z-index: 1; - border-radius: 2% / 1.5%; - box-shadow: 0 0 40px var(--glow-color), inset 0 0 20px rgba(0, 255, 255, 0.1); -} - -header { - display: flex; - justify-content: space-between; - align-items: center; - padding: 1rem 2rem; - background: rgba(0, 0, 0, 0.8); - border-bottom: 2px solid var(--secondary-color); -} - -header h1 { - font-size: 2rem; - color: var(--secondary-color); - text-shadow: 0 0 5px var(--secondary-color); -} - -nav ul { - display: flex; - flex-wrap: wrap; - gap: 1rem; - list-style: none; -} - -nav ul li a { - text-decoration: none; - color: var(--primary-color); - padding: 0.5rem 1rem; - border: 1px solid var(--primary-color); - border-radius: 4px; - text-shadow: 0 0 3px var(--primary-color); -} - -nav ul li a:hover { - background: var(--primary-color); - color: var(--background-color); -} - -.footer-container { - max-width: 960px; - margin: 0 auto; - background-color: rgba(0, 0, 0, 0.85); - box-shadow: 0 0 20px var(--secondary-color); - padding: 2rem; - position: relative; - z-index: 1; - border-radius: 2% / 1.5%; - box-shadow: 0 0 40px var(--glow-color), inset 0 0 20px rgba(0, 255, 255, 0.1); - text-align: center; -} - -ul a { - text-decoration: none; - padding: 0.5rem 1rem; - border: 1px solid var(--primary-color); - border-radius: 2px; - color: var(--primary-color); - text-shadow: 0 0 3px var(--primary-color); -} - -ul a:hover { - background: var(--primary-color); - color: var(--background-color); -} - -ul { - display: flex; - flex-wrap: wrap; - gap: 1rem; - list-style: none; -} - -#repo-list { - display: flex; - gap: 1em; - flex-direction: column; - flex-wrap: nowrap; - list-style: none; -} - -#docs-list { - display: flex; - gap: 1em; - flex-direction: column; - flex-wrap: nowrap; - list-style: none; -} - -footer a { - text-decoration: none; - color: var(--primary-color); - text-shadow: 0 0 3px var(--primary-color); -} diff --git a/sleepeesoftware.fr/css/global.css b/sleepeesoftware.fr/css/global.css deleted file mode 100644 index 0143346..0000000 --- a/sleepeesoftware.fr/css/global.css +++ /dev/null @@ -1,103 +0,0 @@ -:root { - --primary-color: #00ffff; - --secondary-color: #ff00ff; - --background-color: #0d0d0d; - --text-color: #f0f0f0; - --overlay-background: rgba(0, 0, 0, 0.85); - --button-background: #ff00ff; - --button-hover-background: #00ffff; - --scanline-color: rgba(255, 255, 255, 0.05); - --glow-color: rgba(0, 255, 255, 0.3); - --terminal-background: rgba(0, 0, 0, 0.9); - --terminal-border: #ff00ff; - --border-radius: 1.5%; -} - -/* - effect -*/ - -@keyframes fadeIn { - from { opacity: 0; } - to { opacity: 1; } -} - -@keyframes scanlines { - 0% { transform: translateY(0); } - 50% { transform: translateY(-2px); } - 100% { transform: translateY(0); } -} - -@keyframes vhs-static { - 0% { transform: translate(0, 0); } - 25% { transform: translate(-1px, 1px); } - 50% { transform: translate(1px, -0.5px); } - 75% { transform: translate(-0.5px, 0.5px); } - 100% { transform: translate(0.5px, -1px); } -} - -@keyframes flicker { - 0%, 100% { opacity: 0.8; } - 50% { opacity: 1; } -} - -@keyframes pulse { - 0%, 100% { opacity: 1; } - 50% { opacity: 0.75; } -} - - -@keyframes rgb-split { - 0%, 100% { - transform: translate(0px, 0px); - } - 50% { - transform: translate(-0.5px, 0.5px); - } -} - -.fade-in { - animation: fadeIn 0.5s ease-out forwards; -} - -.hidden { - display: none; -} - -.crt-overlay { - position: fixed; - top: 0; - left: 0; - width: 100vw; - height: 100vh; - pointer-events: none; - z-index: -1; - mix-blend-mode: screen; - animation: flicker 0.5s infinite; - border-radius: var(--border-radius); - box-shadow: inset 0 0 40px var(--glow-color); -} - -.grid-bg { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: repeating-linear-gradient( - to right, - rgba(0, 255, 255, 0.1) 0px, - rgba(0, 255, 255, 0.1) 1px, - transparent 1px, - transparent 40px - ), repeating-linear-gradient( - to bottom, - rgba(0, 255, 255, 0.1) 0px, - rgba(0, 255, 255, 0.1) 1px, - transparent 1px, - transparent 40px - ); - background-color: var(--background-color); - z-index: -4; -} - diff --git a/sleepeesoftware.fr/css/loading_screen.css b/sleepeesoftware.fr/css/loading_screen.css deleted file mode 100644 index 99942dc..0000000 --- a/sleepeesoftware.fr/css/loading_screen.css +++ /dev/null @@ -1,60 +0,0 @@ -#loading-screen { - position: fixed; - top: 0; - left: 0; - width: 100vw; - height: 100vh; - background-color: rgb(0, 0, 0); - display: flex; - align-items: center; - justify-content: center; - z-index: 9999; - cursor: pointer; - pointer-events: all; /* Ensure the user can click on the loading screen */ - z-index: 9999; - mix-blend-mode: screen; - box-shadow: inset 0 0 20px rgba(255, 255, 255, 0.15); - animation: flicker 3.0s infinite; -} - -#loading-screen::before { - content: ""; - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: url('/assets/RpdC.gif') repeat; - opacity: 0.05; - mix-blend-mode: screen; - z-index: -1; -} - -#loading-screen::after { - content: ""; - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: repeating-linear-gradient( - 0deg, - rgba(255, 255, 255, 0.05) 0px, - rgba(255, 255, 255, 0.05) 1px, - transparent 1px, - transparent 4px - ); - animation: scanlines 0.1s linear infinite; - z-index: -2; -} - -.loading-text { - color: var(--primary-color); - font-family: 'Orbitron', sans-serif; - font-size: 2rem; - text-align: center; - text-shadow: 0 0 15px var(--primary-color), 0 0 30px var(--primary-color); - animation: pulse 1.5s infinite; - z-index: 10000; - cursor: pointer; -} diff --git a/sleepeesoftware.fr/css/sterling.css b/sleepeesoftware.fr/css/sterling.css deleted file mode 100644 index 1380e94..0000000 --- a/sleepeesoftware.fr/css/sterling.css +++ /dev/null @@ -1,124 +0,0 @@ -body { - --section-gap: 4rem; - margin: 0; - font-family: 'Iosevka SS14', monospace; - background-color: var(--background-color); - color: var(--text-color); - transition: background 0.3s, color 0.3s; - display: flex; -} - -header { - background: #000; - padding: 1rem; - color: var(--text-color); - text-align: center; - position: sticky; - top: 0; - width: 100%; - z-index: 10; - box-shadow: 0 0 10px #0008; - display: flex; - align-items: center; - justify-content: space-around; -} - -h1, h2, h3 { - color: var(--secondary-color); -} - -header h1 { - margin: 0; - font-size: 1.5rem; - color: var(--secondary-color); -} - -#searchInput { - display: block; - position: relative; - top: 100%; - right: 1rem; - padding: 0.5rem; - border: 1px solid var(--text-color); - z-index: 5; - width: 200px; - background: none; - color: var(--text-color); -} - -.controls { - background: #111; - padding: 1rem; - border-top: 1px solid #333; - display: flex; - gap: 1rem; - justify-content: center; -} - -.controls button { - background: none; - border: 1px solid var(--text-color); - color: var(--text-color); - padding: 0.5rem 1rem; - cursor: pointer; -} - -main { - flex-grow: 1; - padding: 2rem; -} - -.section { - padding-bottom: 2rem; -} - -.section h2 { - color: var(--secondary-color); - font-size: 1.25rem; - cursor: pointer; -} - -.section-content { - display: block; - margin-top: 1rem; -} - -pre { - background: var(--overlay-background); - padding: 1rem; - overflow-x: auto; -} - -code { - background: var(--overlay-background); - margin: 1rem 0; - white-space: pre-wrap; - color: var(--text-color); -} - -a { - color: var(--primary-color); -} - -footer { - display: flex; - align-items: center; - justify-content: space-around; - background: var(--overlay-background); -} - -footer section{ - position: relative; - display: block; - padding: 2em; -} - -footer h4 { - text-align: center; -} - -@media print { - .controls, #searchDropdown, #searchToggle { - display: none !important; - } -} diff --git a/sleepeesoftware.fr/css/terminal.css b/sleepeesoftware.fr/css/terminal.css deleted file mode 100644 index 8c8e2db..0000000 --- a/sleepeesoftware.fr/css/terminal.css +++ /dev/null @@ -1,28 +0,0 @@ -.terminal { - background: var(--terminal-background); - border: 2px solid var(--terminal-border); - padding: 2rem; - width: 300px; - margin: 2rem auto; - box-shadow: 0 0 10px var(--terminal-border); -} - -.terminal input { - background: #1a1a1a; - border: 1px solid var(--primary-color); - color: var(--primary-color); - width: 100%; - padding: 0.5rem; - margin-bottom: 1rem; - font-family: monospace; -} - -.terminal button { - background: var(--secondary-color); - border: none; - color: var(--background-color); - padding: 0.5rem 1rem; - cursor: pointer; - font-family: monospace; - text-shadow: 0 0 3px var(--secondary-color); -} diff --git a/sleepeesoftware.fr/html/SterlingLang.html b/sleepeesoftware.fr/html/SterlingLang.html deleted file mode 100644 index 936bae0..0000000 --- a/sleepeesoftware.fr/html/SterlingLang.html +++ /dev/null @@ -1,445 +0,0 @@ - - - - - - - - - - Sterling Documentation - - -
-
-

Sterling Documentation

- -
- - - -
-
- - -
- -

Version: 0.1.0-alpha

- -

Preface

-

"An Idiot admire complexity, a genius admire simplicity" Terry A. Davis

-

"Master All, Ace One" Boykisser

- -

Overview

-

Sterling is a low-level, strongly typed, systems programming language designed for performance, ABI stability, C interoperability, and full control over memory and hardware. It supports metaprogramming, hot-reloading, inline and raw assembly, and is built for multi-file compilation. It also introduces memory safety primitives and modern low-abstraction control flow enhancements.

- -

This Document is a work in progress, features are not yet implemented and i use this as a design document to stay true to my vision

- -

File Extensions (subject to change)

- -
-

Function

-
- -

Qualifiers

-

Every function must declare its linkage explicitly:

- -

- 		//globally visible, default linkage
-static		//translation unit-local only
-inline		//inline-only, no symbol emitted
-asm		//raw assembly function, globally visible
-static_asm	//raw assembly function, TU-local only
-inline_asm	//inline-only asm, no symbol emitted
-async		//for fiber (coroutine) ??
-
- -

Syntax

-

All functions must explicitly declare their return type. The only exception is void, which may be omitted for brevity when no return value is intended.

- -

-u32 add(u32 a, u32 b) {
-	return (a + b);
-}
-
-inline u32 max(u32 a, u32 b) {
-	return ((a > b) ? a : b);
-}
-
-exit() {
-	// equivalent to void exit()
-}
-
- -

Assembly

-

Write raw x86_64 assembly using fn_asm or fn_static_asm. Symbol, section, and global declaration are implicit.(placeholder)

- -

-asm void* memset(void* dst, u8 value, u64 size) {
-	test rdx, rdx
-	je .done
-
-	mov rax, rsi
-	mov rdi, rdi
-	mov rcx, rdx
-
-	rep stosb
-
-.done:
-	mov rax, rdi
-	ret
-}
-
-
-
- -
-

Syscalls

-
-

System calls are allowed via fn_asm or wrapped using concrete ABI-aware interfaces. Example: (placeholder)

-

-asm void exit() {
-	mov rax, 60   ; syscall: exit
-	mov rdi, 0    ; exit code
-	syscall
-	ret
-}
-
-
-
- -
-

Register Access

-
-

Sterling exposes raw CPU registers as language-level primitives. This is intended for kernel, embedded, and runtime-critical tasks.

-

-u64 get_rbp() {
-	return rbp;
-}
-
-void set_rsp(u64 val) {
-	rsp = val;
-}
-
-

Supported registers: rax, rbx, rcx, rdx, rsi, rdi, rsp, rbp, r8..r15.

-
-
- -
-

Types

-
- -

-i8, i16, i32, i64	// signed integers
-u8, u16, u32, u64	// unsigned integers
-f32, f64		// 32-bit and 64-bit IEEE floats
-bool			// 1-byte boolean, 0 or 1 only//maybe but not a fan of them
-char			// 1-byte character (UTF-8)
-
-

-T*			// Pointer to type T
-ptr*			// Special pointer with implicit coercion allowed
-void*			// Opaque pointer with explicit cast required
-
- -

-typedef struct {
-	u32 x = 5;
-	u32 y;
-} vec2u;
-
-vec2u a = {};	// x = 5, y = 0
-vec2u b = {0};	// x = 0, y = 0
-vec2u c;	// x = 0, y = 0
-
-

-u32 raw_val @raw; // raw_val = ? can be poopoo data
-
-
-
- -
-

Memory Model

-
-

Manual memory management by default. Variables are zero-initialized unless marked @raw. All layout is predictable and cache-friendly. Custom allocators are encouraged.

-
    -
  • Stack: locals
  • -
  • Heap: explicit alloc/free
  • -
  • Inline: structs passed by value
  • -
-
-
- - - -
-

Control Flow

-
- -

Loop

-

Sterling introduces tagged loops and escape blocks for structured yet flat nested loop - behavior:

- -

-loop_outer: loop {
-	loop_inner: loop {
-		if (should_exit_inner()) break loop_inner;
-		if (should_exit_outer()) break loop_outer;
-	}
-}
-
-loop {
-	i32 i;//default init at 0
-
-	while() {
-		do
-	}
-}
-
-loop {
-	i32 i;
-	while() {
-		do
-	}
-}
-
-for_each (tmp : array(T)) {
-}?
-
-

This allows control without stack-nesting or excessive flags.

- -

Branching

-

- -

-
-u32 test(u32 x, u32 y) {
-	if (x == y) {
-
-	}
-	if (x == 0) {
-
-	}
-	if (y == 0) {
-
-	}
-
-	switch (data) {
-		(a) {
-			break;
-		}
-		(b) {
-			break;
-		}
-		default: {
-			break;
-		}
-	}
-
-	block search {
-		loop delta {
-			i32 i;
-			while() {
-
-			}
-		}
-	}
-}
-
-
- -
-
- -
-

Dynamic Arrays with Aligned Layout

-
-

Runtime-initialized aligned linear arrays can be used to simulate array-of-array structures, where all memory layout is controlled explicitly with offsets:

-

-struct ArrayView {
-	u8* data;
-	u32 stride;
-	u32 count;
-};
-
-

Insertions and deletions move memory explicitly, re-aligning if needed.

-
-
- -
-

Dynamic Linking

-
-

Sterling does not rely on dynamic linking by default. Static linking is favored for OS and runtime simplicity. Dynamic linking may be optionally implemented via host-defined facilities in the future.

-
-
- -
-

Metaprogramming

-
-

also i am not thinking of having something as close as what jai have, if you want solid meta programming look out for when jai become open beta

- -

Metaprogramming

-

Sterling supports compile-time metaprogramming via the meta keyword. Meta constructs are evaluated at compile time and allow structured code generation, reflection, and type introspection.

- -

Capabilities

-
    -
  • Generate code at compile-time (functions, structs, constants)
  • -
  • Inspect type properties: size, alignment, fields
  • -
  • Enumerate over struct fields, enum variants, function parameters
  • -
  • Branch compile-time logic via meta if, meta match
  • -
  • Define metafunctions using meta fn (not emitted at runtime)
  • -
  • Support platform/target-specific compilation logic
  • -
- -

Restrictions

-
    -
  • Meta code must be side-effect free (pure, deterministic)
  • -
  • No runtime reflection or dynamic codegen
  • -
  • No access to I/O, filesystem, or arbitrary memory
  • -
  • All meta-expansions must type-check
  • -
  • Expansion depth and iteration count are bounded
  • -
- -

Example

-

-meta print_fields_of(T) {
-	for (field : fields(T)) {
-		print("Field: ", field.name, " of type ", field.type);
-	}
-}
-
-meta if sizeof(T) > 64 {
-	fn_inline void fast_copy(T* dst, T* src) { ... }
-}
-
- -

Compiler Meta API (proposed)

-

-meta_typeof(expr)
-meta_sizeof(T)
-meta_alignof(T)
-meta_fields_of(T)
-meta_fn_params(fn)
-meta_platform() // e.g., "linux", "windows"
-meta_codegen(name, ast_block) // gated for advanced use
-
- -
-
- -
-

ABI and Interop

-
-

TODO: Specify ABI model (System V AMD64), calling convention details, struct/pointer representation rules. C interaction, emiting ELF/COFF/Mach-O symbol tables .o

-
-
- -
-

Threading

-
-

TODO: Describe standard threading model, scheduler integration, context switching, green threads API.

- -

Fiber (Coroutine)

-

Using user managed stack that is allocated (usefull for userland threading)

- -
    -
  • Each fiber as:
  • -
      -
    • Its own manually allocated stack
    • -
    • Registers saved/restored on yield and resume
    • -
    • Tracked by a runtime scheduler (or user managed)
    • -
    -
  • fiber_yield() triggers context switch, calling back into a fiber scheduler
  • -
  • Can be pooled, migrated between threads, or used for deterministic execution (e.g., game loops, scripting)
  • -
- -

Internal Scheduler Model

-
    -
  • A circular queue or priority queue of fiber_ids
  • -
  • fiber_yield() pushes current fiber to back of queue
  • -
  • fiber_resume() pulls next and switches context
  • -
-

This allows async, non-blocking logic to be modeled without system threads.

- -

Safety and ABI Guarantees

- -
    -
  • define the fiber stack layout, allowing for precise control (great for embedded targets)
  • -
  • fiber_spawn can return errors if stack is misaligned or exhausted
  • -
  • ABI guarantees for fiber functions: must follow a calling convention you define (e.g., preserved registers)
  • - -

    Thread

    -

    -
      -
    • Created via OS APIs (e.g., pthread, CreateThread, or syscall wrappers)
    • -
    • Each thread runs independently; shares global heap and data structures
    • -
    • You wrap OS threads and assign them entry points via thread_spawn
    • -
    - -

    Thread Primitives

    - -
    
    -thread_spawn(void fn() entry_fn) -> thread_id;
    -thread_join(thread_id tid);
    -thread_exit();
    -
    - -

    Fiber Primitives

    - -
    
    -typedef struct fiber {
    -	void*	stack;
    -	u64	stack_size;
    -	void*	ip;//instruction pointer
    -	u8	flag;
    -}	fiber;
    -
    -fiber_spawn(void fn() entry_fn) -> fiber_id;
    -fiber_yield();
    -fiber_resume(fiber_id id);
    -fiber_self() -> fiber_id;//could also be used instead of fork ex main process fibe_self = 0;
    -
    - -

    Optional stack control:

    - -
    
    -fiber_spawn_stack(void fn(), void* stack_ptr, u64 size);
    -
    - -
-
- -
-

Graphics and Rendering

-
-

TODO: Describe native rendering interfaceI have been thinking about supporting amd gpu acceleration with very few set of actual call, very fewer than opengl or other, but i will focus only on one hardware at first

-
-
- -
-

Build and Compilation Model

-
-

TODO: AOT compilation, linker behavior, multi-file project structure, module system (if any).

-
-
- - -
- - diff --git a/sleepeesoftware.fr/html/SterlingOsDesign.html b/sleepeesoftware.fr/html/SterlingOsDesign.html deleted file mode 100644 index 5288f23..0000000 --- a/sleepeesoftware.fr/html/SterlingOsDesign.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - - - Sterling OS Design Document - - -
-
-

Sterling OS Design Document

- -
- - - -
-
- -
- -

Minimal Capability-Based Operating System

- -

Design Principles

- - -

Authorization Token Model

-

Programs delegate access via opaque, kernel-managed tokens.

-
grant_token(target_pid, resource_id, flags) -> token_id
-accept_token(token_id) -> resource_handle
-revoke_token(token_id)
- -

File Editing Flow

-
    -
  1. DE requests file via storage service
  2. -
  3. Storage service provides a memory buffer
  4. -
  5. Editor process receives buffer handle, edits
  6. -
  7. Changes submitted back to storage via DE
  8. -
- -

Driver Model

- - -

Graphics System

- - -

Programming Language Requirements

- - -

Execution Model

- - -

Sandboxing Model

-

All processes are isolated via strict memory boundaries and capability-scoped access. No process can access global state, shared memory, or system calls without explicit capability grants.

- -

Memory Layout

-
-	+-----------------------+
-	| Code (RX)             |
-	+-----------------------+
-	| Data (RW)             |
-	+-----------------------+
-	| Shared Buffers (RWX?) | ← only if explicitly mapped by kernel
-	+-----------------------+
-	| Stack (RW)            |
-	+-----------------------+
-	
- -

Process Launch

- - -

Capability Enforcement

-

All access is mediated via capability tokens, handed off securely:

-

-	token_id = request_token(pid, SERVICE_IO, READ_WRITE);
-	handle = accept_token(token_id);
-	
- - -

Filesystem Abstraction

- - -

Driver Isolation

- - -

IPC

- - -

Future Additions

- - - -

Philosophy

-

This OS is not a POSIX clone. It is a deterministic, capability-secure, user-controlled computing environment built to reject legacy complexity and embrace verifiable simplicity.

-
- - - diff --git a/sleepeesoftware.fr/html/blog.html b/sleepeesoftware.fr/html/blog.html new file mode 100644 index 0000000..36d3786 --- /dev/null +++ b/sleepeesoftware.fr/html/blog.html @@ -0,0 +1 @@ +
diff --git a/sleepeesoftware.fr/html/card.html b/sleepeesoftware.fr/html/card.html deleted file mode 100644 index a78ac58..0000000 --- a/sleepeesoftware.fr/html/card.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - Sleepee Software - - - - - - - - - - - - - -

COUCOU

-

- test 32332323490838329ew0 -

-
- - diff --git a/sleepeesoftware.fr/html/forums.html b/sleepeesoftware.fr/html/forums.html new file mode 100644 index 0000000..e69de29 diff --git a/sleepeesoftware.fr/html/learn.html b/sleepeesoftware.fr/html/learn.html new file mode 100644 index 0000000..ade73ba --- /dev/null +++ b/sleepeesoftware.fr/html/learn.html @@ -0,0 +1,7 @@ + + +
+ +
diff --git a/sleepeesoftware.fr/html/shop.html b/sleepeesoftware.fr/html/shop.html new file mode 100644 index 0000000..00562da --- /dev/null +++ b/sleepeesoftware.fr/html/shop.html @@ -0,0 +1,3 @@ + + +
diff --git a/sleepeesoftware.fr/index.html b/sleepeesoftware.fr/index.html index 85aa72c..510e8c5 100644 --- a/sleepeesoftware.fr/index.html +++ b/sleepeesoftware.fr/index.html @@ -6,11 +6,9 @@ Sleepee Software - + - - - + @@ -23,75 +21,248 @@
+ - diff --git a/sleepeesoftware.fr/js/index.js b/sleepeesoftware.fr/js/index.js index 6ee325e..f4b69d8 100644 --- a/sleepeesoftware.fr/js/index.js +++ b/sleepeesoftware.fr/js/index.js @@ -5,51 +5,9 @@ document.querySelectorAll('nav ul li a').forEach(link => { document.querySelectorAll('main section').forEach(sec => sec.classList.add('hidden')); const section = document.getElementById(target); if (section) section.classList.remove('hidden'); - if (target == 'project-section') load_card(); }); }); -document.getElementById('login-form')?.addEventListener('submit', function(e) { - e.preventDefault(); - const username = document.getElementById('username').value; - alert(`Logging in as ${username}...`); - // TODO: call backend API for authentication -}); - -function load_card() { - - const docslist = document.getElementById("docs-list"); - docslist.innerHTML = ""; - const docsitem = document.createElement("div"); - docsitem.innerHTML = ` - -

Sterling Lang

-

Sterling Programming Langage

-
- -

SterlingOs

-

Sterling Operating System Design Documents

-
`; - docslist.appendChild(docsitem); - - fetch("/gitea-repos/") - .then(res => res.json()) - .then(repos => { - const list = document.getElementById("repo-list"); - list.innerHTML = ""; // Clear "Loading..." - repos.forEach(function(repo) { - const item = document.createElement(""); - item.innerHTML = ` - -

${repo.name}

-

${repo.description || "No description"}

-
`; - list.appendChild(item); - }); - }) - .catch(err => console.error("Error fetching repos: ", err)); -} - /* onload */ @@ -62,8 +20,29 @@ document.addEventListener("DOMContentLoaded", function() { const container = document.querySelector(".foreground-container"); container.classList.remove("hidden"); container.classList.add("fade-in"); - const footer = document.querySelector(".footer-container") - footer.classList.remove("hidden"); - footer.classList.add("fade-in"); + const container2 = document.querySelector(".navbar-container"); + container2.classList.remove("hidden"); + container2.classList.add("fade-in"); }); }); + +function filterContent() { + const query = document.getElementById('searchInput').value.toLowerCase(); + document.querySelectorAll('.section').forEach(section => { + const text = section.innerText.toLowerCase(); + section.style.display = text.includes(query) ? 'block' : 'none'; + }); +} + +function downloadOfflineVersion() { + const blob = new Blob([document.documentElement.outerHTML], { type: 'text/html' }); + const a = document.createElement('a'); + a.href = URL.createObjectURL(blob); + a.download = 'SystemsLangDocumentation.html'; + a.click(); +} + +function toggleSearch() { + const dropdown = document.getElementById('searchDropdown'); + dropdown.style.display = dropdown.style.display === 'block' ? 'none' : 'block'; +} diff --git a/sleepeesoftware.fr/js/sterling.js b/sleepeesoftware.fr/js/sterling.js deleted file mode 100644 index 4e8b362..0000000 --- a/sleepeesoftware.fr/js/sterling.js +++ /dev/null @@ -1,20 +0,0 @@ -function filterContent() { - const query = document.getElementById('searchInput').value.toLowerCase(); - document.querySelectorAll('.section').forEach(section => { - const text = section.innerText.toLowerCase(); - section.style.display = text.includes(query) ? 'block' : 'none'; - }); -} - -function downloadOfflineVersion() { - const blob = new Blob([document.documentElement.outerHTML], { type: 'text/html' }); - const a = document.createElement('a'); - a.href = URL.createObjectURL(blob); - a.download = 'SystemsLangDocumentation.html'; - a.click(); -} - -function toggleSearch() { - const dropdown = document.getElementById('searchDropdown'); - dropdown.style.display = dropdown.style.display === 'block' ? 'none' : 'block'; -} diff --git a/sleepeesoftware.fr/style.css b/sleepeesoftware.fr/style.css new file mode 100644 index 0000000..337dc23 --- /dev/null +++ b/sleepeesoftware.fr/style.css @@ -0,0 +1,275 @@ +:root { + --primary-color: #00ffff; + --secondary-color: #ff00ff; + --background-color: #0d0d0d; + --text-color: #f0f0f0; + --overlay-background: rgba(0, 0, 0, 0.85); + --button-background: #ff00ff; + --button-hover-background: #00ffff; + --scanline-color: rgba(255, 255, 255, 0.05); + --glow-color: rgba(0, 255, 255, 0.3); + --terminal-background: rgba(0, 0, 0, 0.9); + --terminal-border: #ff00ff; + /*--border-radius: 1.5%;*/ +} + +/* + effect +*/ + +@keyframes fadeIn { + from { opacity: 0; } + to { opacity: 1; } +} + +@keyframes scanlines { + 0% { transform: translateY(0); } + 50% { transform: translateY(-2px); } + 100% { transform: translateY(0); } +} + +@keyframes vhs-static { + 0% { transform: translate(0, 0); } + 25% { transform: translate(-1px, 1px); } + 50% { transform: translate(1px, -0.5px); } + 75% { transform: translate(-0.5px, 0.5px); } + 100% { transform: translate(0.5px, -1px); } +} + +@keyframes flicker { + 0%, 100% { opacity: 0.8; } + 50% { opacity: 1; } +} + +@keyframes pulse { + 0%, 100% { opacity: 1; } + 50% { opacity: 0.75; } +} + + +@keyframes rgb-split { + 0%, 100% { + transform: translate(0px, 0px); + } + 50% { + transform: translate(-0.5px, 0.5px); + } +} + +.fade-in { + animation: fadeIn 0.5s ease-out forwards; +} + +.hidden { + display: none; +} + +.crt-overlay { + position: fixed; + top: 0; + left: 0; + width: 100vw; + height: 100vh; + pointer-events: none; + z-index: -1; + mix-blend-mode: screen; + animation: flicker 1.5s infinite; + border-radius: var(--border-radius); + box-shadow: inset 0 0 40px var(--glow-color); +} + +.grid-bg { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: repeating-linear-gradient( + to right, + rgba(0, 255, 255, 0.1) 0px, + rgba(0, 255, 255, 0.1) 1px, + transparent 1px, + transparent 40px + ), repeating-linear-gradient( + to bottom, + rgba(0, 255, 255, 0.1) 0px, + rgba(0, 255, 255, 0.1) 1px, + transparent 1px, + transparent 40px + ); + background-color: var(--background-color); + z-index: -4; +} + +#top-nav { + max-width: 960px; + margin: 0 auto; + padding: 2rem; + position: relative; + display: flex; + justify-content: space-between; + align-items: center; + padding: 1rem 2rem; + background: rgba(0, 0, 0, 0.8); + border-bottom: 2px solid var(--secondary-color); + z-index: 1; +} + +#left-nav { + position:absolute; + padding: 2rem; + + left:0; +} + +#right-nav { + position:absolute; + padding: 2rem; + + right:0; +} + +nav ul { + display: flex; + flex-wrap: wrap; + gap: 1rem; + list-style: none; +} + +nav ul li a { + text-decoration: none; + color: var(--primary-color); + padding: 0.5rem 1rem; + border: 1px solid var(--primary-color); + border-radius: 4px; + text-shadow: 0 0 3px var(--primary-color); +} + +nav ul li a:hover { + background: var(--primary-color); + color: var(--background-color); +} + +#loading-screen { + position: fixed; + top: 0; + left: 0; + width: 100vw; + height: 100vh; + background-color: rgb(0, 0, 0); + display: flex; + align-items: center; + justify-content: center; + z-index: 9999; + cursor: pointer; + pointer-events: all; /* Ensure the user can click on the loading screen */ + z-index: 9999; + mix-blend-mode: screen; + box-shadow: inset 0 0 20px rgba(255, 255, 255, 0.15); + animation: flicker 3.0s infinite; +} + +#loading-screen::before { + content: ""; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: url('/assets/RpdC.gif') repeat; + opacity: 0.05; + mix-blend-mode: screen; + z-index: -1; +} + +#loading-screen::after { + content: ""; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: repeating-linear-gradient( + 0deg, + rgba(255, 255, 255, 0.05) 0px, + rgba(255, 255, 255, 0.05) 1px, + transparent 1px, + transparent 4px + ); + animation: scanlines 0.1s linear infinite; + z-index: -2; +} + +.loading-text { + color: var(--primary-color); + font-family: 'Orbitron', sans-serif; + font-size: 2rem; + text-align: center; + text-shadow: 0 0 15px var(--primary-color), 0 0 30px var(--primary-color); + animation: pulse 1.5s infinite; + z-index: 10000; + cursor: pointer; +} + +body { + margin: 0; + font-family: 'Orbitron', sans-serif; + color: var(--text-color); + background: var(--background-color); + overflow-x: hidden; +} + +body::before { + content: ""; + position: fixed; + top: 0; left: 0; + width: 100%; + height: 100%; + z-index: 2; + pointer-events: none; + background: url('/assets/RpdC.gif') repeat; + opacity: 0.05; + mix-blend-mode: screen; +} + +body::after { + content: ""; + position: fixed; + top: 0; left: 0; + width: 100%; + height: 100%; + z-index: 1; + pointer-events: none; + background: repeating-linear-gradient( + 0deg, + --scanline-color 0px, + --scanline-color 1px, + transparent 1px, + transparent 4px + ); + animation: scanlines 0.1s linear infinite; +} + +.foreground-container { + max-width: 960px; + min-height: 720px; + margin: 0 auto; + padding: 2rem; + background-color: rgba(0, 0, 0, 0.85); + position: relative; + z-index: 1; +} + +footer a { + text-decoration: none; + color: var(--primary-color); +} + +footer a:hover { + color: var(--secondary-color); + +} + +footer p { + text-align: center; +}