Nim में लागू किया गया hobby operating system Fusion
(github.com/khaledh)- Fusion OS x86-64 के लिए एक hobby operating system है, जिसमें implementation language के रूप में Nim का उपयोग किया गया है
- वर्तमान में लागू किए गए features UEFI bootloader, memory management, task management, system calls, IPC, और hardware support में विभाजित हैं
- memory और task management में demand paging, preemptive multitasking, priority-based scheduling, और ELF loader शामिल हैं
- runtime environment फिलहाल QEMU है, और build के लिए Nim, LLVM के clang·lld, और Just की आवश्यकता है
- future plans में capability-based security, disk I/O, file system, shell, GUI, और networking शामिल हैं
Fusion OS का overview
- Fusion x86-64 के लिए एक hobby operating system है और Nim में implement किया गया है
- development process को 0xc0ffee.netlify.app पर document किया गया है
- screenshots section में UEFI bootloader, kernel booting और execution screens शामिल हैं
- GUI screenshot
graphicsbranch की screen है, और वह branch अभी work in progress है
वर्तमान में लागू किए गए features
-
Boot
- UEFI Bootloader implement किया गया है
-
Memory management
- Single Address Space structure वाला Higher Half Kernel
- Physical Memory Manager
- Virtual Memory Manager
- Demand Paging
-
Task management
- Kernel Tasks
- User Mode Tasks
- Preemptive Multitasking
- Priority-based Scheduling
- Demand Paged और Relocation को support करने वाला ELF Loader
-
System calls
- System Call Interface
- User Mode Library
-
IPC
- Channel-based IPC
- Message Passing
-
Hardware
- PCI Device Enumeration
- ACPI Configuration
- Local APIC Timer
- I/O APIC Interrupts
- PS/2 Keyboard Driver
- Bochs Graphics Adapter Driver
Planned features
- Capability-based Security
- Event-based Task State Machines
- Disk I/O
- File System
- Shell
- GUI
- Networking
Build और run
- build के लिए Nim, LLVM के
clang·lld, और Just की आवश्यकता है clangऔरlldbinariesPATHमें होनी चाहिए- अगर वे
PATHमें नहीं हैं, तो.envfile में संबंधित binary paths specify किए जा सकते हैं
- अगर वे
- build command इस प्रकार है
just build
- Fusion फिलहाल QEMU में चलता है
- run command इस प्रकार है
just run
License
- license MIT है
1 टिप्पणियां
Hacker News की टिप्पणियां
मैं लेखक हूं। कोई सवाल हो तो जवाब दूंगा
अगर नहीं, तो क्या आपको लगता है कि यह Nim के खास non-stop-the-world GC की वजह से है?
https://nim-lang.org/1.4.0/gc.html
अभी दोनों काफी मिलते-जुलते लगते हैं, और लगता है Swift की real-world validation ज्यादा हुई है
ब्लॉग और docs शानदार हैं। दिखाने और समझाने के बीच बहुत अच्छा संतुलन है, और इसे शेयर करने के लिए धन्यवाद
जो भी करता हूं उसे justify करना पड़ता है, इसलिए यह unnecessary complexity हटाने और ज्यादा जरूरी हिस्सों पर focus करने में मदद करता है
Fusion लेखक का development journal:
https://0xc0ffee.netlify.app/osdev/01-intro.html
ऐसी चीजें देखकर अच्छा लगता है। मैं कई वर्षों से Nim ecosystem से कभी-कभार जुड़ा रहा हूं, और यह देखकर खुशी है कि यह छोटा और मजेदार project लगातार आगे बढ़ रहा है
बढ़िया है। मैंने ELF module खोला, और यह पढ़ने में आसान था, इसलिए मजा आया
कभी Nim में real-time operating system लिखकर देखना चाहता हूं। मुझे Nim में embedded programs लिखना पसंद है, इसलिए RTOS बनाना भी मजेदार होगा
Nim क्या है, और Fusion के overall design goals क्या हैं?
उम्मीद है यह बहुत basic सवाल नहीं है। मेरे पास कोई background knowledge नहीं है, इसलिए अच्छा होगा अगर कोई समझा दे
Nim क्यों, इस बारे में हमने साथ बनाई site पर यह लिखा है:
https://0xc0ffee.netlify.app/osdev/01-intro.html
Nim projects और ज्यादा दिखें तो खुशी होगी। मैं मुख्य रूप से Python और JavaScript इस्तेमाल करता हूं, लेकिन एक और modern, तेज statically typed language जानने के फायदे में रुचि है
Go, Rust, Zig, Nim में मुझे Nim सबसे ज्यादा पसंद है। code पढ़ते समय syntax noise कम होने के अर्थ में यह सबसे ज्यादा Python-जैसी लगती है
नए code को prototype करते समय मुझे REPL इस्तेमाल करना बहुत पसंद है, और INim यह काम अच्छी तरह करता है
अभी Nim की सबसे बड़ी समस्या community size का छोटा होना है। इसलिए usable और maintained libraries की दुनिया दूसरी language communities से छोटी है। यह chicken-and-egg problem है, लेकिन ज्यादा developers, जिनमें मैं भी शामिल हूं, “दुनिया में जो बदलाव देखना चाहते हो, वह खुद बनो” अपनाकर इसे हल कर सकते हैं
भाषा भी सावधानी से evolve हो रही है, और Araq के नेतृत्व में लंबे समय में और बेहतर होगी ऐसा लगता है
ecosystem Python या Rust जितना बड़ा नहीं है, लेकिन हैरानी की बात है कि standard library में ज्यादातर जरूरी चीजें मौजूद हैं। कुछ करने के लिए third-party package ढूंढने की जरूरत कम ही पड़ती है
बेशक, मानता हूं कि Nim कम known languages में आता है। फिर भी, इससे इसका यह फायदा खत्म नहीं होता कि यह promising language है और जो करना है, उसे बहुत अच्छे से करती है
मेरा मानना है कि community को जिस हिस्से पर और focus करना चाहिए, वह IDE support है। VSCode extension ठीक है, लेकिन उसमें rough edges हैं। मुझे JetBrains IDE ज्यादा पसंद हैं, और official Nim plugin, नरम शब्दों में कहें तो, काफी कमज़ोर है
Nim के लिए JetBrains plugin बनाने का एक side project भी है, लेकिन अभी बहुत आगे नहीं बढ़ पाया हूं
[0] https://forum.nim-lang.org
[1] https://github.com/khaledh/nimjet
Nim एक बेहतरीन system programming language है, और इसे और popular होना चाहिए