3 ms·
Show HN: A C/C++ IDE written in C from scratch with zero dependencies
I’ve spent the last ~2 years building a C/C++ IDE for Windows entirely in C99. My goal was to eliminate the bloat of the modern Visual Studio environment keeping its core features.
Key Technical Highlights:
Zero Dependencies: Just the Windows API
Performance: Starts in 0.1ms on a twelve year old machine. It handles projects with 500k+ lines without UI lag or indexing stutters.
Integrated Tools: Includes a custom-built debugger, profiler, and Intellisense engine designed for speed.
Portability: It’s a single executable. No installer required.
I built this because I was tired of waiting 10 seconds for Visual Studio to "wake up" and seeing my RAM disappear just to boot it up. It’s currently hosted on itch.io while I gather funds to set up a dedicated site.
- Panzerschrek 7mo agoCan it parse C++ properly and perform correct auto-completion? Which languages besides C and C++ does it support? Does it support language server protocol? Why it's written in C and not C++? How does it render texts without any dependencies? Does it use WinAPI functions for this?
- giovannicar04 7mo agoHi. It can parse C/C++ and perform auto completion correctly, it does partially support LSP, I'm finishing the full integration but in the meanwhile it's using my own C/C++ parser which works up to the latest MSVC standard, it is written in C because it's the main language I use and I'm comfortable with... It renders text using the WinAPI functions.
- Panzerschrek 7mo agoIn order to perform correct C++ parsing you need to handle includes properly. In order to do this your IDE needs to communicate with some build system (CMake, MSBuild, Make) to retrieve include directories. Is it implemented somehow? Or maybe you use your own some-sort-of build system?
- giovannicar04 7mo agoI don't really like complex build systems like CMake or Ninja, I just use a build.bat file which works for basically all projects I use it for. The IDE does not communicate with any build system whatsoever. It stores .h and .c files in a ".trprj" file (just a text file with info on the project and saved data) and upon loading it, it retrieves all .h files and basically recursively walks and find other includes. It is not a complex system, but that's exactly the design choice I was going for. When LSP support is ready, that will be much simpler, altough, it really defies the purpose I am building it for, so I'm not really 100% sure about that choice.