nimscripter
pl_mpeg
nimscripter | pl_mpeg | |
---|---|---|
3 | 2 | |
142 | 722 | |
- | - | |
5.2 | 3.7 | |
2 months ago | about 1 month ago | |
Nim | C | |
MIT License | - |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
nimscripter
-
NIR: Nim Intermediate Representation
> What does this mean? There's a runtime VM or compile time VM?
Compile time VM. It's used to run macros / templates / concepts. You can also run most code at compile time in a `static` block except for stuff that needs C calls. You can also compile the VM into a program and use it as a runtime VM (see https://github.com/beef331/nimscripter) which I do in my GUI lib. NIR should enable the compile time VM to run faster too, and possibly use JIT'ed code.
- Purpose of NimScript vs nim
-
Finally. Embed
Checkout Nim! It does much of what you describe and its great. The core language is fairly small (not quite lua simple but probably ML comparable). It compiles fast enough that a Nim repl like `inim` is useable to check features and for basic maths, though it requires a C compiler, but TCC [4] works perfectly. Essentially Nim + tcc is pretty close to your description, IMHO. Though I'm not sure TCC supports non-x86 targets.
I've never used it but Nim does support some hot reloading as well [3]. It also has a real VM if you want to run user scripts and has a nice library for it [1]. Its not quite Lua flexible but for a generally compiled language its impressive.
Recently I made a wrapper to embed access to the Nim compilers macros at runtime [2]. It took 3-4 hours probably and still compiles in 10s of seconds despite building in a fair bit of the compiler! It was useful for making a code generator for a serializer format. Though I'm not sure its small enough to live on even beefy m4/m7 microcontrollers. Though I'm tempted to try.
1: https://github.com/beef331/nimscripter
pl_mpeg
-
Finally. Embed
You can get some IDE support with a simple preprocessor macro[1].
It's a crutch, but at least you don't need to stuff the shader into multiple "strings" or have string continuations (\) at the end of every line. Plus you get some syntax highlighting from the embedding language. I.e. the shader is highlighted as C code, which for the most part seems to be close enough.
[1] https://github.com/phoboslab/pl_mpeg/blob/master/pl_mpeg_pla...
-
Video Codecs and 4k
> MPEG is not free. A license is required for using MPEG.
For MPEG-1 this is not true anymore. All patents have expired. It's also far less computationally expensive and easier to implement/integrate than more modern codecs. This makes MPEG-1 a "good enough" solution for (e.g.) short video clips in a game.
Disclaimer: I wrote pl_mpeg[1], so my opinion is biased.
[1] https://github.com/phoboslab/pl_mpeg
What are some alternatives?
incbin - Include binary files in C/C++
pyker - Python tool to convert files from a directory tree into a C header file.
cdecl - Nim helper for using C Macros
execfs - Proof of concept userspace filesystem that executes filenames as shell commands and makes the result accessible though reading the file.
langserver - The Nim language server implementation (based on nimsuggest)
stb - stb single-file public domain libraries for C/C++
nim - Mono - Nim Web Framework
zig - General-purpose programming language and toolchain for maintaining robust, optimal, and reusable software.