Hacker News new | past | comments | ask | show | jobs | submit login
Picoc: A very small C interpreter for scripting (github.com/zsaleeba)
80 points by alecco on Sept 4, 2015 | hide | past | favorite | 28 comments



Maybe it's a weird fetish of mine, but I always enjoy a good embeddable, scripting engine. It kind of brings me joy and hope. Can't say why. The more engines, the merrier.


I feel the same way. If you haven't seen it already, take a look at mine: https://munificent.github.io/wren/


I like a lot your previous work on Vigil :)

https://github.com/munificent/vigil

"It goes without saying that any function that throws an exception which isn't caught is wrong and must be punished."


As a student interested in language design and VM programming, this is wonderful. Clean, easy to read code, as well as what seems to be a really well-thought out language. Thanks for this!


Props to you and parent poster. I'm with you both. And thanks for the pointer to Wren. I didn't know about it.



was 1873 days ago I think it is okay to post this and not be told it was done already.


> not be told it was done already.

It doesn't sound like they were rebuking you. It's pretty common to link to a previous discussion for people interested, especially if the current one doesn't take off or if the previous one contains some information worth repeating or avoiding.


It has been posted more recently than that I think.


Yes: https://news.ycombinator.com/item?id=9641832

Still, I'm happy to see it since I've somehow missed all the previous times.


Doesn't say it in the README, but has anyone checked to see if they implemented enough of C to be self-hosting?


Hi, I'm the author of picoc. It's not self-hosting, no. It's meant to be small rather than a feature-complete implementation of C so it's unlikely it will ever be self-hosting.


Tried it when it was posted last time. It couldn't run it's own source files.

I was wondering if anyone had tried to use cling in any project? It uses llvm's own parser/jit.


I've used it a tiny bit as part of ROOT (and its predecessor cint a bit more). It pretty much works as advertised, there's not a whole lot to get excited about IMHO. It certainly doesn't make ROOT any less miserable to use.


In similar spirit: https://docs.enlightenment.org/auto/eio/embryo_main.html

Enlightment uses its own Scripting Languagew throught the EFL.


Used it when testing some PCMCIA CAM hardware for my day job. Good tool.


Tangentially related: What is the smallest self-hosted interpreter? What about the most efficient one?

This isn't it (among other things, it isn't self-hosted).


I've used it before and it's pretty cool. Unfortunately, still a bit too big for some embedded systems (I was using it with an Arduino).


Author here. I tried to make it small enough to run on tiny microcontrollers like the arduino but unfortunately C seems just a bit too complicated for that.


Either way, awesome work.

I actually was working on my own sub-sub-subset of C for a tiny scripting language (for the aforementioned project) and I was often referring back to how you wrote picoc.


or use tcc with JIT compilation


TCC isn't a JIT-compiler, the script-option compiles all and then runs it on the fly. This allows C-files to be executable by themselves with a shebang-line.


It's also usable as a dynamic load library. It's still not a JIT, but a program can use it to run code directly without having to fork/exec/spawn anything.


I guess in some sense that could also be described as "just in time," i.e. just before you need to run it.


I've heard the phrase "just-before-time" (or JBT) for this, i.e. compiling on the target machine.


what problem does this solve that is not already solved by the n scripting engines that are already out there? When would I use this in lieu of Rhino / JS on the JVM, for example?

Pet peeve of mine: people publish projects and don't position what they've built in the universe of existing things. Readers without context won't know what to do with it. A simple FAQ would be really helpful.


It was moved from Google Code to Github. It was originally written as the scripting language for UAVs on-board flight system

https://code.google.com/p/picoc/


I originally wrote it as a scripting language for a UAV controller I was making, and also as an exercise in keeping a language small and neat.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: