https://github.com/WheretIB/nullc Skip to content Sign up * Why GitHub? + Features - + Mobile - + Actions - + Codespaces - + Packages - + Security - + Code review - + Issues - + Integrations - + GitHub Sponsors - + Customer stories - * Team * Enterprise * Explore + Explore GitHub - + Learn and contribute + Topics - + Collections - + Trending - + Learning Lab - + Open source guides - + Connect with others + The ReadME Project - + Events - + Community forum - + GitHub Education - + GitHub Stars program - * Marketplace * Pricing + Plans - + Compare plans - + Contact Sales - + Education - [ ] * # In this repository All GitHub | Jump to | * No suggested jump to results * # In this repository All GitHub | Jump to | * # In this user All GitHub | Jump to | * # In this repository All GitHub | Jump to | Sign in Sign up {{ message }} WheretIB / nullc Public * Notifications * Star 72 * Fork 7 * Fast C-like programming language with advanced features MIT License 72 stars 7 forks Star Notifications * Code * Issues 3 * Pull requests 1 * Actions * Projects 0 * Wiki * Security * Insights More * Code * Issues * Pull requests * Actions * Projects * Wiki * Security * Insights master Switch branches/tags [ ] Branches Tags Could not load branches Nothing to show Loading {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default Loading View all tags 5 branches 2 tags Code Loading Latest commit @WheretIB WheretIB Removed unused variables ... e38246d Dec 24, 2020 Removed unused variables e38246d Git stats * 3,896 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time Modules Fixed swapped argument name Dec 6, 2020 NULLC Removed unused variables Dec 24, 2020 bin Updated module build script Feb 17, 2019 external Added natvis for rapidjson library Apr 18, 2020 nullc_exec Added std.error module for error/exception handling Jul 23, 2020 nullc_ide ide: added optimization level selection Nov 2, 2020 nullcl Added CMake project Dec 23, 2019 tests Fixed crash on null pointer access in big object load and store Dec 24, 2020 vscode Fixed missing class member alignment after module import Dec 15, 2020 .gitignore vs dkm debugger: work snapshot May 17, 2020 .travis.yml Fix travis sanitize config Oct 4, 2019 CMakeLists.txt Added CMake project Dec 23, 2019 CMakeSettings.json Added CMake project Dec 23, 2019 CmdRef.html Updated command reference and language reference. Jan 10, 2010 LICENSE Added LICENSE file Sep 10, 2015 LanguageEN.html Basic types (short, int, long, float and double) are aligned the same... Nov 3, 2013 LibraryEN.html Log file output control and test in coverage configuration Feb 23, 2019 Makefile Added std.error module for error/exception handling Jul 23, 2020 README.md * Readme update Apr 4, 2019 TODOlist.txt Re-organized project structure, renamed sub-projects Mar 18, 2019 codecov.sh Code coverage upload script fix Mar 25, 2019 codecov.yml Ignore external libraries in coverage data Mar 25, 2019 nullc.natvis natvis for lowered VM instructions Sep 14, 2019 nullc_100.sln Visual Studio project configuration fixes Mar 19, 2019 nullc_110.sln x86 platform for Visual Studio 2012 project + enabled multiprocessor ... Mar 18, 2019 nullc_141.sln Extension update: language client for Visual Studio Apr 21, 2019 nullc_142.sln Extension update: added Visual Studio debugger (Concord) component fo... Apr 27, 2020 View code [ ] nullc March 2019 Update Changes in 2015 Changes in 2013 Changes in 2012 November 19, 2010 September 18, 2010 June 18, 2010 May 14, 2010 README.md nullc Build Status Build status codecov.io Coverity Scan Codacy Badge Language grade --------------------------------------------------------------------- nullc is a C-like embeddable programming language with advanced features such as function overloading, operator overloading, class member functions and properties, automatic garbage collection, closures, coroutines, local functions, type inference, runtime type information, modules, list comprehension, enums, namespaces, generic functions and classes. Language is type-safe and memory-safe. nullc library can execute code on a VM or translate it to x86 code for fast execution. It can also translate nullc files into C source files. This repository builds multiple additional tools: * nullcl - a tool to compile nullc source files into a binary module, C source files or an executable (using gcc). * nullcexec - a tool to execute nullc source files. * nullc_ide - a simple text editor with code colorizing and simple debug compatibilities (including remote debugging for applications that execute nullc scripts). * nullc_lang_server - a language server implementation for integration with IDEs * nullc_lang_debugger - a debug adapter that also includes language runtime for execution of nullc programs * nullc_lang_client - a Visual Studio Code extension adapter that includes nullc_lang_server and nullc_lang_debugger March 2019 Update Core: * New two-phase (parse/analyze) compiler * Improved syntax and expression trees * Parse error recovery with multiple error reports * Partial analyzer error recovery * Extended constant evaluation * Additional SSA intermediate representation with optimization passes * Improved source location tracking * Language improvements: + Member functions defined inside class body have access to complete class definition + Local function external variables are captures the same way in global code, functions and coroutines: when they go out of scope + Support for partial type inference when only parts of target type are marked as generic + Support for explicit type casts + Variable can be defined inside an 'if' condition + Class accessors can be used in modify-assignment expressions + enum constants can reference previous constants + Conditional expression will find common type between arrays of different explicit size * Compiler fixes: + Numerical unary operations can no longer be performed on 'auto ref' pointers + Read-only array size and type members can't be changed using member functions + Local classes can't be used after owning scope has ended + Fixed missing class constructor calls + Fixed alignment of function pointers + Fixed type inference for for-each iterator values + Fixed lookup of names inside a namespace + Fixed variable visibility after shadowing of said variable has ended + Fixed integer literal value overflow * Runtime fixes: + Fixed crash on external function calls with non-zero terminated character arrays Misc: * Fixed translation to C++ * VS Code extension with language server and debugger * arm and arm64 support * External function calls are handled by dyncall library on all supported platforms (x86, x64, arm, arm64, powerpc) Interface: * Support for multiple module search paths * Log file output control * Optimization level control Changes in 2015 Core: * Improved type inference in short inline functions Misc: * Fixed bugs, crashes and hangs in the compiler found by extensive fuzz-testing * Fixed compilation with gcc and clang on x86/x64 * dyncall library can be used to perform external function calls Changes in 2013 Core: * 'explicit' function argument types to opt-out from implicit conversions in overload resolution * function overload resolution based on function return type Misc: * std.string module for string operations * std.event module for C#-style event handlers * Android support (armeabi, armeabi-v7a and x86 targets) Interface: * nullcGetGlobalType to get nullc type id by name Changes in 2012 Changes from 0.9 tag Core: * Type inheritance * Generic function specialization * Generic functions with explicit type specification * Generic type specializations for a different number of template parameters * Static 'if' in class body * Named function arguments * Extended typeof expression improvements * Allocation of any type using 'new' expression * Nested comments * Numerous bug fixes Misc: * Run-time type introspection improvements * Wrapper for binding class member functions and class members from C++. November 19, 2010 Changes from 0.8b to 0.9 Core: * Short inline function definition syntax with extended type inference * Generic functions * Extended typeof syntax * Static if * Improved type inference * Pointers to overloaded operators * Generic types * Object finalization * Automatic class constructor call * Array index operator can have any number of arguments * Additional object construction code * Modify-assign operators %= <<= >>= &= |= ^= * || or && operator overloads with short-circuiting support * Numeric constants inside a class * bool type * "in" binary operator * Non-generic class forward declaration * enum * User class usage as conditions in if/for/while/do while/switch expressions * namespaces Misc: * Updated std.vector * Updated std.list * Added std.hashmap SuperCalc: * Redo support * Persistent undo Translation to C doesn't work in this version, use 0.8 September 18, 2010 Changes from 0.7 to 0.8b Core: * List comprehension * Coroutine can be used as a generator in for each expression. * JiT executor supports dynamic code linking and evaluation Misc: * Automatic function binding under gcc and msvs. Interface: * Added nullcIsStackPointer and nullcIsManagedPointer. * Added nullcGetFunction and nullcSetFunction. June 18, 2010 Changes from 0.6b to 0.7: Core: * Coroutines * Compile-time function evaluation * Better structure compatibility with C * Type constructor can be called in new expression. * added auto[``] type - an array with implicit size and element type. Helps GC when pointer contains objects of unspecified type. * nullptr can be assigned to type[``] * Various GC fixes and performance improvements * VM speedup Misc: * Linux x86/x64 support * PS3 support * Documentation update Interface: * Debug break actions: step over, step into, step out. * Global memory limit can be set * Further translation to C improvements SuperCalc: * Added watch * Debug improvements: step over, step into, step out, module source code load May 14, 2010 Changes from 0.5 to 0.6b: Core: * Stack overflow exception handling in JiT * x86 asm optimization * Function override * eval() (VM-only) * Translation of NULLC code into C++ code * Support for unary operator +, -, ! and ~ overloading. * NULLC function call when executor is running * NULLC function call by pointer * NULLC function call with parameters * Functions with variable argument count * Function call of auto ref type redirection to target type * Ability to define arrays of non-stack types char, short and float * Default function argument values are exported and imported * Operators can be defined and overloaded in functions and classes Misc: * x64 support * Digitalmars C++ compiler support * NULLC can compile code containing characters with codes over 0x7f Interface: * Debugging features (call stack, stack frame contents, breakpoints (VM-only)) * Functions for fast execution result retrieval as numeric values * nullcSetGlobal and nullcGetGlobal functions. * JiT executor parameter stack placement can be specified * NULLC_NO_EXECUTOR define that compiles NULLC without executors SuperCalc: * Remote debugging About Fast C-like programming language with advanced features Topics programming-language embeddable scripting-language Resources Readme License MIT License Releases 2 tags Packages 0 No packages published Contributors 2 * @WheretIB WheretIB Vyacheslav Egorov * @zeux zeux Arseny Kapoulkine Languages * C++ 73.7% * nesC 17.3% * HTML 4.0% * C# 3.3% * C 1.1% * Makefile 0.3% * Other 0.3% * (c) 2021 GitHub, Inc. * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time. You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.