{"id":28256750,"url":"https://github.com/codeyousef/seenlang","last_synced_at":"2026-05-15T00:16:34.933Z","repository":{"id":292434632,"uuid":"980866432","full_name":"codeyousef/SeenLang","owner":"codeyousef","description":null,"archived":false,"fork":false,"pushed_at":"2026-03-06T00:40:50.000Z","size":127800,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-06T04:59:54.254Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/codeyousef.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-05-09T21:18:10.000Z","updated_at":"2026-03-06T00:40:44.000Z","dependencies_parsed_at":"2025-06-17T12:34:47.264Z","dependency_job_id":"b1c0efff-9ee6-484e-91b5-6a6bed0955d6","html_url":"https://github.com/codeyousef/SeenLang","commit_stats":null,"previous_names":["codeyousef/seenlang"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/codeyousef/SeenLang","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codeyousef%2FSeenLang","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codeyousef%2FSeenLang/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codeyousef%2FSeenLang/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codeyousef%2FSeenLang/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codeyousef","download_url":"https://codeload.github.com/codeyousef/SeenLang/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codeyousef%2FSeenLang/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30252500,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-08T08:59:44.879Z","status":"ssl_error","status_checked_at":"2026-03-08T08:58:02.867Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-05-19T23:13:48.938Z","updated_at":"2026-05-15T00:16:34.040Z","avatar_url":"https://github.com/codeyousef.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/images/seen-logo.png\" alt=\"Seen Language\" width=\"180\"\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eSeen (س)\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eA self-hosted systems programming language with multi-language keywords\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#quick-start\"\u003eQuick Start\u003c/a\u003e \u0026middot;\n  \u003ca href=\"#examples\"\u003eExamples\u003c/a\u003e \u0026middot;\n  \u003ca href=\"#language-features\"\u003eFeatures\u003c/a\u003e \u0026middot;\n  \u003ca href=\"#benchmarks\"\u003eBenchmarks\u003c/a\u003e \u0026middot;\n  \u003ca href=\"#ide-support\"\u003eIDE Support\u003c/a\u003e \u0026middot;\n  \u003ca href=\"#contributing\"\u003eContributing\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-MIT-blue.svg\" alt=\"License: MIT\"\u003e\u003c/a\u003e\n  \u003ca href=\"#\"\u003e\u003cimg src=\"https://img.shields.io/badge/Platform-Linux%20%7C%20macOS-lightgrey.svg\" alt=\"Platform\"\u003e\u003c/a\u003e\n  \u003ca href=\"#\"\u003e\u003cimg src=\"https://img.shields.io/badge/Compiler-Self--Hosted-brightgreen.svg\" alt=\"Self-Hosted\"\u003e\u003c/a\u003e\n  \u003ca href=\"#\"\u003e\u003cimg src=\"https://img.shields.io/badge/Languages-6-orange.svg\" alt=\"6 Languages\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\nSeen is a compiled systems programming language where the compiler is written entirely in Seen itself. It targets LLVM, ships with a built-in LSP, and lets you write code using keywords in English, Arabic, Spanish, Russian, Chinese, or Japanese.\n\n```seen\nfun main() {\n    let names = [\"Alice\", \"Bob\", \"Charlie\"]\n    for name in names {\n        println(\"Hello, {name}!\")\n    }\n}\n```\n\nThe same program in Arabic:\n\n```seen\nدالة رئيسية() {\n    اجعل أسماء = [\"أحمد\", \"سارة\", \"خالد\"]\n    لكل اسم في أسماء {\n        اطبع(\"مرحبا، {اسم}!\")\n    }\n}\n```\n\nAnd in Chinese:\n\n```seen\n函数 主函数() {\n    让 名字列表 = [\"小明\", \"小红\", \"小华\"]\n    对于 名字 在 名字列表 {\n        打印(\"你好，{名字}！\")\n    }\n}\n```\n\n## Why Seen?\n\n**LLVM code generation** -- Seen compiles through LLVM with native codegen,\nSIMD controls, target selection, and package artifact linking.\n\n**Self-hosted** -- The compiler is written in Seen and verifies itself through\nthe Stage 1 -\u003e Stage 2 -\u003e Stage 3 bootstrap flow.\n\n**Incremental compilation** -- Source and IR caches keep rebuilds focused on\nchanged modules where possible.\n\n**Multi-language keywords** -- Keywords are defined in TOML files under `languages/`. Adding a new language is adding a directory of TOML files -- no compiler changes required.\n\n**Region-based memory** -- No garbage collector. Memory is managed through regions and arenas with compile-time lifetime tracking.\n\n## Quick Start\n\n### Source Build Prerequisites\n\n- **LLVM 18+** (`clang`, `opt`, `llc`, `llvm-as`, `lld`)\n- **GCC** (for runtime compilation)\n- **Git**\n\n### Build from Source\n\n```bash\ngit clone https://github.com/codeyousef/SeenLang.git\ncd SeenLang\nAVAIL_KB=$(awk '/MemAvailable/ {print $2}' /proc/meminfo)\nMAIN_KB=$(( AVAIL_KB * 70 / 100 ))\nif [ \"$MAIN_KB\" -gt 14680064 ]; then MAIN_KB=14680064; fi\nulimit -v \"$MAIN_KB\"\nSEEN_LOW_MEMORY=1 SEEN_SKIP_LOW_MEMORY_SHORTCUT=1 \\\nSEEN_MAIN_VMEM_KB=\"$MAIN_KB\" SEEN_OPT_VMEM_KB=2097152 \\\n./scripts/safe_rebuild.sh\n```\n\nThe production compiler lands at `compiler_seen/target/seen`.\n\n### Install\n\n```bash\nsudo cp compiler_seen/target/seen /usr/local/bin/seen\n```\n\nOr add to your shell profile:\n\n```bash\nexport PATH=\"$PATH:/path/to/SeenLang/compiler_seen/target\"\n```\n\n### Hello World\n\n```bash\necho 'fun main() { println(\"Hello, Seen!\") }' \u003e hello.seen\nseen compile hello.seen hello\n./hello\n```\n\n## Usage\n\n```bash\nseen compile source.seen output    # Compile to native binary\nseen compile source.seen output --fast\nseen run source.seen               # JIT execution\nseen check source.seen             # Type check only\nseen pkg fetch                     # Install package dependencies from Seen.toml\nseen lsp                           # Start language server\n```\n\n### Compiler Flags\n\n| Flag | Description |\n|------|-------------|\n| `--fast` | Skip heavy optimizations, use O1 |\n| `--emit-llvm` | Dump generated LLVM IR |\n| `--backend llvm` | Use the shipped LLVM backend |\n| `SEEN_TRACE_LLVM=all` | Trace LLVM IR generation |\n| `SEEN_TRACE_LLVM=gep` | Trace selected struct/GEP layout paths |\n| `--null-safety` | Enable null safety checks |\n| `--warn-uninit` | Warn on uninitialized variables |\n| `--stack-check` | Enable stack overflow checks |\n\n## Examples\n\n### Variables and Control Flow\n\n```seen\nfun main() {\n    let name = \"Seen\"\n    var count = 0\n\n    while count \u003c 5 {\n        count = count + 1\n        if count == 3 {\n            println(\"Three!\")\n        }\n    }\n\n    println(\"{name}: counted to {count}\")\n}\n```\n\n### Classes and Methods\n\n```seen\nclass Vec2 {\n    var x: Float\n    var y: Float\n\n    static fun new(x: Float, y: Float) r: Vec2 {\n        return Vec2 { x: x, y: y }\n    }\n\n    fun length() r: Float {\n        return sqrt(this.x * this.x + this.y * this.y)\n    }\n\n    fun add(other: Vec2) r: Vec2 {\n        return Vec2.new(this.x + other.x, this.y + other.y)\n    }\n}\n\nfun main() {\n    let a = Vec2.new(3.0, 4.0)\n    let b = Vec2.new(1.0, 2.0)\n    let c = a.add(b)\n    println(\"Length: {c.length()}\")\n}\n```\n\n### Enums and Pattern Matching\n\n```seen\nenum Shape {\n    Circle(radius: Float)\n    Rectangle(width: Float, height: Float)\n}\n\nfun area(shape: Shape) r: Float {\n    return when shape {\n        is Circle(r) =\u003e 3.14159 * r * r\n        is Rectangle(w, h) =\u003e w * h\n    }\n}\n```\n\n### Traits\n\n```seen\ntrait Printable {\n    fun display() r: String\n}\n\nimpl Printable for Vec2 {\n    fun display() r: String {\n        return \"({this.x}, {this.y})\"\n    }\n}\n```\n\n### Generics\n\n```seen\nfun max\u003cT\u003e(a: T, b: T) r: T {\n    if a \u003e b { return a }\n    return b\n}\n\nclass Stack\u003cT\u003e {\n    var items: Array\u003cT\u003e\n\n    fun push(item: T) {\n        this.items.push(item)\n    }\n\n    fun pop() r: T {\n        return this.items.pop()\n    }\n}\n```\n\n### Async/Await\n\n```seen\n@async\nfun fetchData(url: String) r: String {\n    let response = await httpGet(url)\n    return response.body\n}\n```\n\n### Closures\n\n```seen\nfun apply(arr: Array\u003cInt\u003e, f: Fun) r: Array\u003cInt\u003e {\n    var result = Array\u003cInt\u003e()\n    for item in arr {\n        result.push(f(item))\n    }\n    return result\n}\n\nfun main() {\n    let nums = [1, 2, 3, 4, 5]\n    let doubled = apply(nums, |x| x * 2)\n}\n```\n\n### SIMD\n\n```seen\nfun dot_product(a: Array\u003cFloat\u003e, b: Array\u003cFloat\u003e, n: Int) r: Float {\n    var sum = f32x4(0.0, 0.0, 0.0, 0.0)\n    var i = 0\n    while i + 4 \u003c= n {\n        let va = simd_load_f32x4(a, i)\n        let vb = simd_load_f32x4(b, i)\n        sum = sum + va * vb\n        i = i + 4\n    }\n    return reduce_add(sum)\n}\n```\n\n### GPU Compute (Vulkan)\n\n```seen\n@compute(workgroup_size = 64)\nfun vector_add(a: Buffer\u003cFloat\u003e, b: Buffer\u003cFloat\u003e, out: Buffer\u003cFloat\u003e) {\n    let idx = global_invocation_id.x\n    out[idx] = a[idx] + b[idx]\n}\n```\n\n### Parallel For\n\n```seen\nfun main() {\n    var results = Array\u003cInt\u003e.withLength(1000)\n    parallel_for i in 0..1000 {\n        results[i] = i * i\n    }\n}\n```\n\n### Compile-Time Evaluation\n\n```seen\ncomptime fun factorial(n: Int) r: Int {\n    if n \u003c= 1 { return 1 }\n    return n * factorial(n - 1)\n}\n\nlet TABLE_SIZE = comptime { factorial(10) }\n```\n\n### Defer and Error Handling\n\n```seen\nfun readFile(path: String) r: String {\n    let file = File.open(path)\n    defer { file.close() }\n\n    try {\n        return file.readAll()\n    } catch e {\n        println(\"Error: {e}\")\n        return \"\"\n    }\n}\n```\n\n## Language Features\n\n### Type System\n- Immutable by default (`let`), opt-in mutability (`var`)\n- Nullable types (`T?`) with safe access (`?.`) and null coalescing (`??`)\n- Generics with constraints (`\u003cT: Ord\u003e`)\n- Type aliases and distinct types\n- `Result\u003cT, E\u003e` and `Option\u003cT\u003e` types\n\n### Data Structures\n- Classes with methods, inheritance, and traits\n- Enums (simple and data-carrying)\n- Structs (value types)\n- `Array\u003cT\u003e`, `Vec\u003cT\u003e`, `HashMap\u003cK, V\u003e`, `BTreeMap\u003cK, V\u003e`, `LinkedList\u003cT\u003e`, `SmallVec\u003cT, N\u003e`\n\n### Memory Management\n- Region-based memory (no GC)\n- `move`, `borrow`, `ref` semantics\n- `defer` for cleanup\n- `arena` allocators\n- `@packed`, `@cache_line` layout control\n\n### Concurrency\n- `async`/`await` with LLVM coroutines\n- `parallel_for` with fork-based parallelism\n- `Mutex`, `RwLock`, `Barrier`, `Channel`, `AtomicInt`\n- `@send`/`@sync` markers for thread safety\n\n### Metaprogramming\n- `comptime` evaluation\n- Decorators: `@derive(Clone, Hash, Eq, Debug, Serialize, Deserialize, Json)`\n- `@reflect` for runtime type information\n- `@intrinsic` for LLVM intrinsic mapping\n\n### GPU\n- `@compute`, `@vertex`, `@fragment` shader annotations\n- `Buffer\u003cT\u003e`, `Uniform\u003cT\u003e`, `Image\u003cT\u003e` types\n- GLSL codegen with Vulkan runtime\n- `--emit-glsl` to inspect generated shaders\n\n### SIMD\n- Vector types: `i8x16`, `i16x8`, `i32x4`, `i64x2`, `f32x4`, `f64x2`\n- Arithmetic, comparison, shuffle, swizzle\n- Horizontal reductions (`reduce_add`, `reduce_min`, `reduce_max`)\n- Aligned load/store, gather/scatter\n\n### Interop\n- `extern fun` for C FFI\n- `@cImport` for C header inclusion\n- `@repr(C)` for C-compatible struct layout\n\n### Operators\n- Word operators: `and`, `or`, `not` (alongside `\u0026\u0026`, `||`, `!`)\n- String interpolation: `\"Hello, {name}!\"`\n- Range: `0..n`, `0..=n`\n- Pipe-style chaining\n\n## Benchmarks\n\n17 production benchmarks in `benchmarks/production/`:\n\n| Benchmark | Description |\n|-----------|-------------|\n| `01_matrix_mult` | Dense matrix multiplication |\n| `02_sieve` | Sieve of Eratosthenes |\n| `03_binary_trees` | GC-stress binary tree allocation |\n| `04_fasta` | FASTA sequence generation |\n| `05_nbody` | N-body planetary simulation |\n| `06_revcomp` | Reverse-complement DNA |\n| `07_mandelbrot` | Mandelbrot set rendering |\n| `08_lru_cache` | LRU cache with hash map |\n| `09_json_serialize` | JSON serialization |\n| `11_spectral_norm` | Spectral norm computation |\n| `12_fannkuch` | Fannkuch-redux permutations |\n| `13_great_circle` | Great-circle distance |\n| `14_hyperbolic_pde` | Hyperbolic PDE solver |\n| `15_dft_spectrum` | Discrete Fourier transform |\n| `16_euler_totient` | Euler's totient function |\n| `17_fibonacci` | Recursive Fibonacci |\n\nRun benchmarks:\n\n```bash\n./scripts/run_production_benchmarks.sh\n```\n\nComparison benchmarks against C, C++, Rust, and Zig are in `benchmarks/comparison/`.\n\n## Multi-Language Support\n\nSeen's keywords are defined externally in TOML files. Six languages ship with the compiler:\n\n| Language | Directory | Example keyword for `fun` |\n|----------|-----------|---------------------------|\n| English | `languages/en/` | `fun` |\n| Arabic | `languages/ar/` | `دالة` |\n| Spanish | `languages/es/` | `fun` |\n| Russian | `languages/ru/` | `функция` |\n| Chinese | `languages/zh/` | `函数` |\n| Japanese | `languages/ja/` | `関数` |\n\nEach language has 17 TOML files covering keywords, operators, and standard library names.\n\n### Adding a New Language\n\n1. Create `languages/xx/` (where `xx` is the language code)\n2. Copy the English TOML files as templates\n3. Translate keyword values\n4. The compiler auto-detects available languages\n\nNo compiler rebuild required.\n\n## IDE Support\n\n### Visual Studio Code\n\nThe `vscode-seen/` directory contains a full-featured extension:\n\n- Syntax highlighting with TextMate grammar\n- IntelliSense via built-in LSP\n- Real-time error diagnostics\n- Code formatting, debugging, REPL\n- Snippets for common patterns\n- Multi-language keyword support\n\n```bash\ncd vscode-seen\nnpm install\nnpm run package\ncode --install-extension seen-*.vsix\n```\n\n### Any Editor (LSP)\n\nSeen includes a built-in language server:\n\n```bash\nseen lsp\n```\n\n**Neovim:**\n```lua\nrequire'lspconfig'.seen.setup{\n  cmd = {\"seen\", \"lsp\"},\n  filetypes = {\"seen\"},\n  root_dir = require'lspconfig.util'.root_pattern(\"Seen.toml\", \".git\"),\n}\n```\n\n**Emacs:**\n```elisp\n(lsp-register-client\n (make-lsp-client :new-connection (lsp-stdio-connection '(\"seen\" \"lsp\"))\n                  :major-modes '(seen-mode)\n                  :server-id 'seen-lsp))\n```\n\n## Project Structure\n\n```\nSeenLang/\n├── compiler_seen/            # Self-hosted compiler\n│   └── src/\n│       ├── main_compiler.seen # Shipped compiler CLI/bootstrap driver\n│       ├── main.seen         # Higher-level CLI wrapper source\n│       ├── lexer/            # Tokenizer with multi-language support\n│       ├── parser/           # Recursive descent parser\n│       ├── typechecker/      # Type inference and checking\n│       ├── codegen/          # LLVM IR generation and backend helpers\n│       ├── bootstrap/        # Frontend orchestration\n│       └── lsp/              # Language server implementation\n├── bootstrap/                # Frozen bootstrap compiler\n│   └── stage1_frozen         # Verified binary (SHA-256 checked)\n├── seen_std/                 # Standard library (Seen)\n├── seen_runtime/             # C runtime (memory, I/O, collections)\n├── languages/                # Keyword definitions (6 languages, 102 TOML files)\n├── vscode-seen/              # VS Code extension\n├── tests/                    # Test suites\n│   └── e2e_multilang/        # multilingual end-to-end tests\n├── benchmarks/               # 17 production benchmarks + comparison suite\n├── scripts/                  # Build, test, and IR validation tools\n├── installer/                # Platform installers (Linux, macOS, Windows)\n└── docs/                     # Design documents and specifications\n```\n\n## Compiler Architecture\n\nThe compiler follows a staged pipeline:\n\n```\nSource (.seen)\n  → Lexer (tokenize with language-specific keywords)\n  → Parser (recursive descent → AST)\n  → Type Checker (inference, validation, smart casts)\n  → IR Generator (AST → LLVM IR, three-pass: signatures → types → bodies)\n  → LLVM/toolchain backend\n  → Native Binary\n```\n\nKey architectural decisions:\n- **Multi-module codegen**: LLVM IR generation is split across focused state and driver modules.\n- **Content-addressed caches**: source and IR caches avoid recompiling unchanged work where possible.\n- **Three-pass IR generation**: declarations, type/layout preparation, then bodies.\n- **IR validation gates**: `scripts/seen_prebuild_gates.sh`, `scripts/seen_ir_verify.sh`, and `seen_ir_lint` catch known late-stage failures early.\n\n## Development\n\n### Bootstrap-Verified Builds\n\nThe compiler compiles itself. After any change to `compiler_seen/src/`, verify bootstrap:\n\n```bash\nAVAIL_KB=$(awk '/MemAvailable/ {print $2}' /proc/meminfo)\nMAIN_KB=$(( AVAIL_KB * 70 / 100 ))\nif [ \"$MAIN_KB\" -gt 14680064 ]; then MAIN_KB=14680064; fi\nulimit -v \"$MAIN_KB\"\nSEEN_LOW_MEMORY=1 SEEN_SKIP_LOW_MEMORY_SHORTCUT=1 \\\nSEEN_MAIN_VMEM_KB=\"$MAIN_KB\" SEEN_OPT_VMEM_KB=2097152 \\\n./scripts/safe_rebuild.sh\n```\n\nThis builds stage 2 from the frozen bootstrap, then stage 3 from stage 2. If\nthe staged checks match, the fixed-point is confirmed.\n\n### Running Tests\n\n```bash\n# End-to-end language tests\nbash tests/e2e_multilang/run_all_e2e.sh\n\n# IR validation on generated modules\n./scripts/seen_ir_verify.sh /tmp/seen_module_*.ll\n```\n\n### Debugging the Compiler\n\n```bash\n# Type checker tracing\nSEEN_DEBUG_TYPES=1 seen compile program.seen program\n\n# LLVM IR generation tracing\nSEEN_TRACE_LLVM=all seen compile program.seen program\n\n# Struct layout debugging\nSEEN_TRACE_LLVM=gep seen compile program.seen program\n```\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Make changes\n4. Run tests: `bash tests/e2e_multilang/run_all_e2e.sh`\n5. Verify bootstrap with explicit memory caps as described above.\n6. Submit a pull request\n\n## License\n\nMIT License. See [LICENSE](LICENSE) for details.\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#quick-start\"\u003eGet Started\u003c/a\u003e \u0026middot;\n  \u003ca href=\"https://github.com/codeyousef/SeenLang/issues\"\u003eReport a Bug\u003c/a\u003e \u0026middot;\n  \u003ca href=\"https://github.com/codeyousef/SeenLang\"\u003eStar on GitHub\u003c/a\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodeyousef%2Fseenlang","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodeyousef%2Fseenlang","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodeyousef%2Fseenlang/lists"}