ReIDE is an ultra-lightweight, high-performance, and adaptive dark-mode IDE built from the ground up utilizing x86_64 Assembly, Free Pascal (FPC), and Rust. It runs directly on the X11 windowing system with zero heavy dependencies (no electron, no web-tech, no massive UI frameworks).
- Hybrid Architecture:
- Assembly (x86_64): Optimized register-based char/icon blitter (
font.pas) with zero stack frame overhead. - Free Pascal: GUI framework, tab manager, X11 event loop, and Unix pseudo-terminal (PTY) shell spawner.
- Rust: High-performance tokenizer, code syntax highlighter, and shebang-based language detector.
- Assembly (x86_64): Optimized register-based char/icon blitter (
- Universal Language Highlighting: Dynamically parses shebang headers (
#!/bin/bash,#!/usr/bin/env python) and file extensions to support 15+ languages (Pascal, Rust, ASM, C/C++, Python, Go, JS/TS, HTML, CSS, Markdown, JSON, YAML/TOML). - Responsive Layout & Buffer Resizing: Listens to X11
ConfigureNotifyevents. Resizing the window reallocates the framebuffer on the fly, adjusts text scrolls, and scales the terminal dimensions dynamically. - Integrated PTY Shell Terminals: Multiple concurrent terminal tabs at the bottom with standard ANSI escape color parsing and process monitoring (automatically respawns shells if they exit).
- Live Debugger Panel: Dedicated
"Logs"tab displaying internal events (FFI calls, keys, window resizes) in real-time, backed up by file logs in/home/USER/.reide/logs/ide.log. - Session Persistence: Saves and restores your workspace, active tabs, and cursor offsets automatically when you close and reopen the editor.
- Top Utility Menu: Interactive buttons
[ New ] [ Open ] [ Save ] [ Save As ]for mouse-driven workflows.
| Shortcut | Action |
|---|---|
Ctrl + N |
Instantly create a new untitled buffer in a new tab |
Ctrl + O |
Open / Create file path input prompt |
Ctrl + S |
Save current active file |
Ctrl + A |
Clear all text in the active tab (reset cursor to 0,0) |
Ctrl + F |
Search text in active document (scrolls automatically) |
Ctrl + Q |
Safe Exit (saves session files & cursor positions) |
You need the Free Pascal Compiler, Cargo (Rust), and X11 development headers installed on your system.
Debian / Ubuntu:
sudo apt update
sudo apt install fpc cargo libx11-dev makeCompile the Rust shared library and FPC binary in one step using the provided Makefile:
makeTo launch the IDE:
./ideTo open specific files directly in new tabs:
./ide main.pas src/lib.rs MakefileReIDE features a lightweight, Unix-style plugin manager. Plugins are written in raw x86_64 Assembly (.asm), stored in the ~/.reide/plugins/ directory, and dynamically scanned by the IDE.
- Dynamic Compilation: When you click a plugin from the
[ Plugins ]dropdown menu, the IDE compiles the raw.asmfile on-the-fly usingnasmandld:nasm -f elf64 -o plugin.o plugin.asm && ld -o plugin plugin.o - Text Filtering: Active plugins act as text streams. The IDE pipes the current editor buffer into the plugin's
stdin, captures the modified output fromstdout, and replaces the editor buffer in real-time. - Live Toggling: Click a plugin in the list to toggle it:
- Active (Red outline): Runs reactively on every keypress (e.g., converting all typed text to uppercase live).
- Inactive (Blue outline): Turns the plugin filter off.
Save this code in ~/.reide/plugins/uppercase.asm to try it out:
section .bss
buf resb 4096
section .text
global _start
_start:
.loop:
; read(0, buf, 4096)
mov rax, 0 ; sys_read
mov rdi, 0 ; stdin
mov rsi, buf ; buffer
mov rdx, 4096 ; size
syscall
test rax, rax ; EOF or error
jle .exit
mov r8, rax ; save bytes read
mov rcx, 0 ; index
.process:
cmp rcx, r8
jge .write ; finished processing buffer, write it out
mov al, [rsi + rcx]
cmp al, 'a'
jl .skip
cmp al, 'z'
jg .skip
sub al, 32 ; to uppercase
mov [rsi + rcx], al
.skip:
inc rcx
jmp .process
.write:
; write(1, buf, r8)
mov rax, 1 ; sys_write
mov rdi, 1 ; stdout
mov rsi, buf
mov rdx, r8 ; bytes to write
syscall
jmp .loop
.exit:
mov rax, 60 ; sys_exit
mov rdi, 0 ; status 0
syscallide.pas— Main loop, X11 layout, text buffers, mouse/keyboard handler, PTY shell manager, and settings.font.pas— Contains the 8x16 console bitmap font and the custom x86_64 assembly blitter routines (DrawCharASM).src/lib.rs— Rust FFI library for tokenization, language detection, and custom tab icons.Makefile— Build script orchestrating Cargo and FPC compilers.
This project is licensed under the GNU Affero General Public License v3 (AGPLv3). See the LICENSE file for details.