News for hackers. Stuff that matters.
Re:Janet for Mortals by djha-skin on Friday March 31, 2023 @09:58AM (#35387255)
My question for why Janet was answered:

> My favorite feature of Janet, though, is something that sounds really dumb when I say it out loud: you can actually distribute Janet programs to other people. You can compile Janet programs into statically-linked native binaries and give them to people who have never even heard of Janet before. And they can run them without having to install any gems or set up any virtual environments or download any runtimes or anything else like that.

The space is ripe for a lisp that is easily distributable. Yes, common lisp can be statically compiled, but their binaries (at least with sbcl) can get pretty big [1], even with compression. Making a lisp specifically good at using to make CLI or desktop tools with good c ffi support is compelling.

1: https://blog.djha.skin/blog/50mb-for-hello-world/

Re:Janet for Mortals by ianthehenry on Friday March 31, 2023 @10:32AM (#35387722)
I think Janet is an excellent choice for making redistributable CLI apps. Chapter 12 covers a bit of this, including the implementation of an extremely simple fzf-powered todo list: https://janet.guide/scripting/
Re:Janet for Mortals by eimrine on Friday March 31, 2023 @02:29PM (#35391248)
But not if a support of Windows 7 in a CLI app is important.
Re:Janet for Mortals by dylan604 on Friday March 31, 2023 @02:38PM (#35391383)
in 2023, why would it be? we're talking creating something new in a newish language. we're not talking about supporting legacy code on a deprecated OS
Re:Janet for Mortals by eimrine on Saturday April 01, 2023 @08:18AM (#35399645)
1. Windows 7 share is 5% of all Windowses right now, that means that a number of Windows 7 machines is more than a number of all Linux ones. That's not an answer to question "why to support 7" but an important note.

2. "Janet runs on Windows" as claimed by their website. Why not change to "Janet runs on Windows 8+" or whatever version is also not supported. I have lost several hours while figuring up this issue. How much time of other dudes have to be spent before somebody will write down this clarification on the webpage? All the Windows history tells me that backward compatibility is the killer feature of Windows.

3. Windows 7 is the last good version of Windows. Also there is a lot of computer equipment which is stuck to Windows 7, for example laptops with ATI videocard only which does not support any modern Linux because of xorg version, x32 machines, machines which are not supposed to be exposed to Internets any more, most laptops in second-hand etc. I do not think Windows 7 deserves to be forgotten right now.

Re:Janet for Mortals by ahtihn on Sunday April 02, 2023 @06:35AM (#35409120)
> All the Windows history tells me that backward compatibility is the killer feature of Windows.

Backwards compatibility generally means you can use programs made for older versions of Windows on newer versions of Windows.

What you want is the opposite of that: run a new program on an old version of Windows. Expecting that of all programs would mean no new OS feature or API could ever be used.

Generally staying on an old OS means you accept that you don't get to use newer programs.

Re:Janet for Mortals by sebstefan on Friday March 31, 2023 @10:13AM (#35387446)
I used to do that in Lua

https://github.com/LuaDist/srlua

The Lua runtime is 340kB on Windows and there's plenty of project including the one above made by the Lua maintainers to produce statically linked and dynamically linked binaries.

But it's Lua, so while I loved the language, you have to put up with the tiny list of standard features which can make it a grind.

Re:Janet for Mortals by brabel on Friday March 31, 2023 @02:48PM (#35391538)
The project you linked to has been archived. Are you sure they are still maintaining it?

As someone who's playing with Lua to run an incredibly lightweight HTTP server[1] which requires just a few MB on disk and 1MB of RAM (while supporting stuff like JSON, HTTPS, Sqlite DB, Email, MQTT and a lot more), I would be curious what you think are the problems with Lua.

[1] http://barracudaserver.com/ba/doc/

Re:Janet for Mortals by freilanzer on Friday March 31, 2023 @10:12AM (#35387438)
Who cares about these sizes though? I know I don't and nobody I know would either. 100Mb are downloaded in roughly 6 seconds with my connection at home.
Re:Janet for Mortals by Malcx on Friday March 31, 2023 @10:25AM (#35387621)
You forgot the /s right? Most of the world doesn't have that kind of connection.
Re:Janet for Mortals by eru on Friday March 31, 2023 @10:34AM (#35387775)
Yes, some of us have faster internet. (Assuming freilanzer talked about megabits, not megabytes.)
Re:Janet for Mortals by freilanzer on Friday March 31, 2023 @10:51AM (#35388003)
I don't see how this is a huge problem. You don't need to download the executable once per minute.
Re:Janet for Mortals by tmtvl on Friday March 31, 2023 @11:42AM (#35388808)
Exactly, and loading stuff into memory is free, everyone has an SSD, and RAM and L1 cache are exactly as fast as each other \s.

But on a more serious note, I actually do care because I have around 4,500 packages installed on my system. If all of those were 100MB in size I'd have a problem.

Re:Janet for Mortals by krinkatt on Thursday April 13, 2023 @04:04AM (#35552404)
Searching *.exe in Everyting and select all -> 12 779 objects.

With 50MB a piece that would be ~0.5TB. That is 50% of my system SSD.

Re:Janet for Mortals by iansinnott on Friday March 31, 2023 @10:02AM (#35387306)
I wonder if Jank [1] could be such a Lisp? I haven't played around with it, but I really like the idea and would love to see it get more traction.

[1]: https://jank-lang.org/

Re:Janet for Mortals by miroljub on Friday March 31, 2023 @10:07AM (#35387374)
Unless jank rebrands itself as NativeClojure retaining 100% Clojure compatibility with a few more native related goodies, I don't see it offering more than Janet, which is also inspired by Clojure.

Given that they have similar goals, why not merge and join efforts? Would help in softening the rough edges and reducing the bus factor.

Re:Janet for Mortals by cellularmitosis on Friday March 31, 2023 @11:27AM (#35388550)
Looks like the key difference is that jank is based on persistent data structures, while Janet embraces mutability.
Re:Janet for Mortals by smegsicle on Friday March 31, 2023 @02:45PM (#35391490)
'jank' is a good name then- janky immutable structures sounds flexible and fast, while janky mutable structures sounds like a big mucky headache
Re:Janet for Mortals by medo-bear on Friday March 31, 2023 @10:11AM (#35387418)
50mb for a hello world in common lisp is a bit misleading. its 50mbs for a hello world + an entire interactive common lisp runtime you can use to further extend the application. if you write 2x hello world it aint gonna be 100mb lol

on the other hand, i hear that commercial versions of common lisp can achieve better results. but seriously, is this such an issue for todays computers ? i have pdfs that are hundreds of mb

Re:Janet for Mortals by zdragnar on Friday March 31, 2023 @10:45AM (#35387910)
Why would I want a 50mb hello world?
Re:Janet for Mortals by thechao on Friday March 31, 2023 @11:09AM (#35388268)
Why do you want hello world, at all? Yes, the nearly-null program is 50MB; also, yes, a fairly nontrivial program is ... 60MB? The core for a computer algebra system is 100MB?

You're paying a higher initial capital cost for lower per-unit costs.

Re:Janet for Mortals by thomascgalvin on Friday March 31, 2023 @11:01AM (#35388137)
Why would you want a hello world at all? That isn't a realistic distribution scenario.
Re:Janet for Mortals by HelloNurse on Friday March 31, 2023 @11:22AM (#35388457)
A simple "Hello World" is a realistic test scenario, representative of a large class of plain command line tools and approximately reduced to pure overhead.

If you can distribute and run a trivial hello world program, you can expect to be able to distribute and run something like tail or uniq, and that it will be larger (more standard library portions linked) and slower (more actual work executed).

Re:Janet for Mortals by medo-bear on Friday March 31, 2023 @11:37AM (#35388721)
what is the case for static compilation with those use cases
Re:Janet for Mortals by EggsAndOil on Friday March 31, 2023 @11:59AM (#35389060)
On the contrary, 50 milli bits is quite small for Hello World.
Re:Janet for Mortals by leoc on Friday March 31, 2023 @10:50AM (#35387985)
I think it's fair to say that that sentence almost screams "this is my adoption strategy". And fair enough, of course.
Re:Janet for Mortals by ianthehenry on Friday March 31, 2023 @10:53AM (#35388031)
I am not the author of the Janet programming language, just a user who likes it enough to write a book about it. That is my real favorite feature, not a strategy of any kind :)
Re:Janet for Mortals by andrewflnr on Friday March 31, 2023 @10:57AM (#35388076)
Racket can supposedly compile standalone packages with the raco compile command (IIRC). Does anyone have experience with this?
Re:Janet for Mortals by butt____hugger on Friday March 31, 2023 @11:08AM (#35388249)
They aren't standalone executables, they need to be distributed along with the lib folder that includes the racket runtime.
Re:Janet for Mortals by sebstefan on Friday March 31, 2023 @11:29AM (#35388596)
Surely the lib can be included statically no like Lua does no?
Re:Janet for Mortals by nsm on Friday March 31, 2023 @04:02PM (#35392720)
Sorry, I meant to respond to this but went to the parent https://news.ycombinator.com/item?id=35392704
Re:Janet for Mortals by nsm on Friday March 31, 2023 @04:01PM (#35392704)
Doesn't raco make followed by raco exe produce fully standalone (except libc) executables? I believe some platforms need an additional raco distribute step.
Re:Janet for Mortals by andrewflnr on Friday March 31, 2023 @04:03PM (#35392752)
Oh, raco exe is probably what I was thinking of.
Re:Janet for Mortals by sschwarzer on Sunday April 02, 2023 @04:09PM (#35414608)
At least in some cases, you need the options --orig-exe (Posix) or --embed-dlls (Windows) to make the binary standalone. For me that worked for command line programs. The options are described at https://docs.racket-lang.org/raco/exe.html . You can use both options at the same time, regardless of running Posix or Windows.
Re:Janet for Mortals by dunham on Friday March 31, 2023 @05:33PM (#35393959)
I haven't used it beyond just trying it out once or twice. But a "hello world" application in the Idris2 language compiles to a 17kb racket file (the default backend is chez, but it also does racket and javascript).

If I run `raco exe` on this, I get a 57MB file. On mac, it's only linking system libraries. (For Idris2 programs, there is an Idris support library that is dynamically loaded.)

I haven't tested transporting it to another system (my test was on an arm mac, so I don't have another system to test that on).

Re:Janet for Mortals by shakow on Friday March 31, 2023 @08:11PM (#35395513)
I do, it was extremely useful to quickly whip out a GUI doing some stuff and share it with colleagues under Windows/macOS/Linux.

Cons:

- 200MiB archives

Pros:

- I can develop a GUI doing some stuff on proprietary binary files, extracting & converting data, generating a handful of plots in a couple of days and have all my colleagues enjoy it without any issue.

Re:Janet for Mortals by psychphysic on Friday March 31, 2023 @11:43AM (#35388817)
Maybe I'm being too simplistic but this should be a characteristic of the implementation and not the language?

Then again I don't know much about the technical details here (when do you or don't you need your own runtime). It seems baffling to me with all the cruft and bloat in a modern windows install do you still have to install so many microsoft runtimes.

Re:Janet for Mortals by weavie on Friday March 31, 2023 @11:58AM (#35389048)
The difficulty with a lot of dynamic languages is that it is very difficult to determine at compile time what parts of the runtime are not going to be invoked so you largely end up having to include the entire platform in the executable.
Re:Janet for Mortals by crabbone on Friday March 31, 2023 @05:52PM (#35394147)
I really struggle to think about a language that doesn't usually need a runtime. Some can produce binaries that don't need a runtime, but usually you need to jump through hoops to make that happen.

We just don't notice that typical C programs need libc and pthreads. Or that C++ programs on Windows require that cursed Microsoft Visual C++ Runime DLL which is always missing, but has few dozens of copies all over the system of the miserable Microsoft slave.

Go doesn't produce fully statically linked binaries by default. I used to make "from scratch" Go containers and, in general case, you need libc in them, unless you are willing to go through pain of statically linking with it.

Typical / practical Rust programs will also depend on libc and pthreads (but, sure, you can do w/o).

Re:Janet for Mortals by tpoacher on Friday March 31, 2023 @12:45PM (#35389725)
> you can actually distribute Janet programs to other people. You can compile Janet programs into statically-linked native binaries and give them to people who have never even heard of Janet before

In theory you "can" do that with python too.

"Can" is a very different kettle of fish from "most people are inclined to".

Re:Janet for Mortals by djha-skin on Friday March 31, 2023 @12:52PM (#35389830)
Nah, you really can't.

Before you start screaming "cxFreeze/pyOxidizer/pyInstaller", NO. I have gone this route. It is incredibly painful. Python was built with the thought in mind that it would be interpreted. It wasn't engineered well for compilation. A significant amount of effort, often a significant percentage of the total effort, is spent shoehorning things into this as an escape hatch because requirements have changed. This is not the route to choose from the start. Same goes for Clojure and `native-image`. I'm glad the native image project exists, and we all hail babashka as a success story, but it doesn't mean its author didn't have to spend a ton of time with native-image. If you go this route, prepare to spend half your time with the build tool itself, and be prepared for "oh the language technically works with this, but not if I use library x" type disappointments right and left.

The best, most painless route is to go with a language which has thought about the end result of the build pipeline beforehand. Rust and Go are gold standard for this. If I want a Python that is statically compiled, I reach for Go.

So to hear that the language made a bunch of tiny little design decisions up and down the line with the idea of making static executables from the start is, from this DevOps engineer, incredibly compelling.

Re:Janet for Mortals by _a_a_a_ on Friday March 31, 2023 @01:25PM (#35390188)
My Python isn't very good so I'm not familiar with your cxFreeze/pyOxidizer/pyInstaller list, but couldn't you just develop your python using one of these tools from the start?
Re:Janet for Mortals by cjohnson318 on Friday March 31, 2023 @01:50PM (#35390582)
For a script with a few dependencies, pyInstaller isn't too bad. I love Python, but it's an interpreted language first and foremost. Distributing Python code is never easy, no matter what you throw at it. Things that are supposed to "just work" almost never work when you need them to on someone else's machine.
Re:Janet for Mortals by progre on Friday March 31, 2023 @02:14PM (#35391001)
Sure you can, but last I tried (admitedly a good long while ago) the exe included everything except that fucking Visual Studio DLL that everything requires.
Re:Janet for Mortals by crabbone on Friday March 31, 2023 @05:35PM (#35393981)
Bare Python is mostly useless. People use Python because of the libraries. The kinds of projects that are developed in Python all, save the most trivial ones, rely on stuff that's not written in Python.

For instance, if you do ML, then you use NumPy, Scikit-Learn etc. It's all C / C++ code, which you will have to link with somehow. And even if you figure out how to link with it, your program will still suck because of the unnecessary (as I call it) PyObject layer, i.e. the Python interpreter interface that is used for communicating between Python libraries. Eg. say you wanted to pass a pointer from one library to another. If you were writing in C -- no big deal, just have some externally visible function in one library and call it in another, and you are done. But if you want to connect two Python libraries, at best, you'll have to use a special struct PyCapsule, with two dozens or so of fields, which is allocated by Python's allocator and also needs to be deallocated... The overhead will be tremendous.

Similarly, if you do Web development, you need some HTTP server that can run fast. I haven't touched this part of Python in a long time, but the last thing I came to use was Tornado, which was a C library with Python bindings.

When it comes to infra, there are plenty of tools that are also written in C, various database drivers, Kafka client, encryption library... and so on.

---

Bottom line, even if you defeat the system and manage to make it all compile together... it won't work well, not as well as it could have if only you could ditch Python entirely from this equation. And if you could, then... well... you'd be just writing in C...

Re:Janet for Mortals by _a_a_a_ on Friday March 31, 2023 @06:05PM (#35394305)
That's a very strange post that doesn't sound like it's coming from a professional programmer. "Do everything in C" really misses the value of using a glue language. Furthermore you overlook the cost of python as glue, which can be relatively quite low under the right circumstances. Everything is a trade-off.
Re:Janet for Mortals by crabbone on Friday March 31, 2023 @08:50PM (#35395831)
What glue? Did you even read what you replied to?
Re:Janet for Mortals by _a_a_a_ on Saturday April 01, 2023 @07:55AM (#35399519)
Respectively, Python, and Yes I did.

https://html.duckduckgo.com/html?q=glue%20language

Re:Janet for Mortals by crabbone on Saturday April 01, 2023 @02:11PM (#35402523)
Well, reading may mean different things... When I use this word, I mean that comprehension is involved.
Re:Janet for Mortals by _a_a_a_ on Saturday April 01, 2023 @03:07PM (#35403059)
So I failed your comprehension test; explain then what your point was.
Re:Janet for Mortals by ActorNightly on Sunday April 02, 2023 @05:36AM (#35408772)
Reading through your comment history, it seems like you are on a personal crusade against Python, but your arguments boil down to this:

"Python is a shit language because it doesn't do/have [insert a niche thing that you think a language should do]"

Which is failing to grasp the role Python plays. You can make this sort of argument against any language, and generally you would be correct in the fact that languages can be improved.

But the fact remains that Python is widely used, and no, its not because people are dumber than you and don't know better, its because they simply dgaf about any of the niche cases you talk about.

For example, nobody is going to look at Numpy and realize its C, and ask the question of "Hmm, I wonder why Im using Python in the first place if its really just C under the hood". Not to mention that the practice of patching Python libraries through C like you describe pretty much never happens. Not to mention that core ML isn't even the standard C, its open cl or CUDA C which are specialized, and how you get to defining those kernels is largely irrelevant for functional sake, but largely relevant in how efficient and simple it is, which is why Python is used.

For all your other issues across comments (like venv, pip dependency), you seem to assume that when someone runs into the issue, it somehow causes everything to break and things to fail. None of what you describe really plays out in reality on a large scale. Things work because people are smart enough to realize what they are doing. It could be that you personally have issues with your company, which is the source of your frustration, but I can assure you that is not the case across all of industry. Google, despite its many issues, has built plenty of good things using Python, and defaulting to C/C++/Go when they need to.

Google, despite its many issues, has built plenty of good things using Python, and defaulting to C/C++/Go when they need to. When you start building better things than Google in other languages and prove that the thing is better because of the language choice, then you will have a point.

In your reply to my other comment, you said

"But, even, imagine that in your fairy-tale world Python is somehow so super-important and successful? Didn't I already explain how this is possible while still being a garbage language?"

This is the equivalent of you just standing in the middle of the busy street with a sign that says "everyone is on a path to hell with your choices in life, you must repent and follow Jesus". You are entitled to your opinion, but I hope you realize that you aren't making any real points.

Re:Janet for Mortals by cjohnson318 on Friday March 31, 2023 @01:53PM (#35390627)
Go for the win. It's not too hard to pick up, it builds fast, it runs fast, and cross-compilation is easy.
Re:Janet for Mortals by actuallyalys on Friday March 31, 2023 @02:59PM (#35391696)
Native image has been getting better, with the Graal project recently making it much easier to get builds working on Windows. So it’s getting to be quite painless, so that I think it’s already worth it for people already familiar with Clojure.

But if you’re looking specifically to write small tools distributed as native binaries, Janet sounds like a much better choice.

Re:Janet for Mortals by djha-skin on Friday March 31, 2023 @04:54PM (#35393502)
I will be most interested when this gets easier, in particular if it works with sqlite and the unzip libraries. Those libraries are the major snags. I could not get it running on windows (the repo in question[1]).

1: https://github.com/djhaskin987/zic

Re:Janet for Mortals by lenkite on Friday March 31, 2023 @09:43PM (#35396186)
Sorry, but you truly need to re-educate yourself on how excellent native compilation supporting infrastructure like GraalVM is. So many HN folks have some decade-old view of old programming language and tools without trying anything out for themselves. And get stuck in a "bias bubble".

It takes ~2minutes TOTAL to download, install and compile Graal VM against Java sources to produce a ~11MB debug build native binary. Utterly painless and even measured. You can reduce that considerably further to ~4MB by seeing what modules contribute to the size using the Graal VM dashboard https://www.graalvm.org/dashboard/ and choosing to omit them with a flag.

Frankly, I found it easier to work with than your Rust+Go standard as I can easily see exactly which modules contribute to binary bloat-up and choose alternatives.

There are also excellent, first-class frameworks built from the ground up for Java native compilation like https://quarkus.io/.

Re:Janet for Mortals by djha-skin on Saturday April 01, 2023 @08:43AM (#35399850)
I'm sure it's easier with Java, and I apologize for not being clearer. I have recent, unpleasant experience with Clojure, not java. That said, I would still be (pleasantly!) surprised to hear of someone using a sqlite java library and having it work without a hitch on native-image.
Re:Janet for Mortals by lenkite on Saturday April 01, 2023 @12:53PM (#35401805)
Sadly, another baseless assumption. I just downloaded sqlite java driver from https://github.com/xerial/sqlite-jdbc/. And compiled their sample program on the home page (creates db with table and some rows) to native code. I did all this within ~2min after reading your response.

Its very, very hip nowadays to worship Rust/Go and bash Java and gain HN karma from the younger generation while doing so, but at-least do it on real facts and not assumptions.

    javac Sample.java && native-image -cp .:sqlite-jdbc-3.41.2.1.jar Sample 
    ./sample                                                                                                       
    name = leo
    id = 1
    name = yui
    id = 2    
    ls -al sample.db                                                                                               
    -rw-r--r--  1 OMIT  OMIT  8192 Apr  1 22:22 sample.db
Re:Janet for Mortals by JohnMakin on Friday March 31, 2023 @12:53PM (#35389844)
can't you compile C into statically linked binaries?
Re:Janet for Mortals by vram22 on Friday March 31, 2023 @07:50PM (#35395369)
Sure you can. I'm not a language expert, but IIRC, static linking was the only option at first for C, Pascal, FORTRAN, etc., earlier. Dynamic linking came later.
Re:Janet for Mortals by tom_ on Friday March 31, 2023 @07:56PM (#35395417)
Yes. This language looks like it might be a bit more convenient to use in some respects, though.
Re:Janet for Mortals by vindarel on Friday March 31, 2023 @01:03PM (#35389993)
> common lisp can be statically compiled, but their binaries (at least with sbcl) can get pretty big [1], even with compression.

My SBCL binaries are ±28MB, with the complete Lisp runtime and debugger (cool, I can eval and load configuration files or connect to a remote app) and dozens of dependencies, including a web server.

Re:Janet for Mortals by djha-skin on Friday March 31, 2023 @01:18PM (#35390112)
I could get it down to 10 with the `:compression` option on[1] for hello world. Perhaps this is the option you use? The compression didn't hurt the run time much as I recall. It's the reason why I'm still okay with common lisp for this use case.

1: http://www.sbcl.org/manual/#Function-sb_002dext-save_002dlis...

Re:Janet for Mortals by vindarel on Friday March 31, 2023 @01:25PM (#35390193)
absolutely, I use SBCL compression (following this recipe: https://lispcookbook.github.io/cl-cookbook/scripting.html#bu... that boils down to save-lisp-and-die ultimately). Start-up times are still below the 50ms for me.
Re:Janet for Mortals by zem on Friday March 31, 2023 @01:20PM (#35390129)
chicken scheme can do this too, for what it's worth
Re:Janet for Mortals by muyuu on Friday March 31, 2023 @01:54PM (#35390656)
chicken scheme comes to mind

anyone around knows how does it compare to Chicken?

Re:Janet for Mortals by koito17 on Friday March 31, 2023 @02:11PM (#35390949)
The binaries are big because it's shipping a preprended lisp kernel together with the entire programming language in a heap image. It's also largely dependent on the Common Lisp implementation. SBCL is very inline happy and consequently consumes more memory than other Lisp implementations. A fresh CCL image consumes at most 8 MB on my Mac.

If you want small binaries, then you'd want tree-shaking, not an entirely new language. LispWorks is already capable of producing small, graphical hello world examples. Even then, a hello world is a rather silly benchmark for binary size, especially since it totally ignores the fixed cost of a language runtime and no serious person is distributing a hello world.

Re:Janet for Mortals by pnathan on Friday March 31, 2023 @02:17PM (#35391055)
- a helm 3 distro is 45M

- a terraform distro is 59M

- a kubectl distro is 44M

getting rust installed on a windows machine required not just a rust distro, but a visual c++ library set over 1G.

at a certain employer, the size of the teams golang tool was well over 100MB.

So - 50MB to start with a full Lisp image? yeah, sure, no worries.

Re:Janet for Mortals by nerdponx on Friday March 31, 2023 @03:32PM (#35392254)
Plenty of Scheme implementations produce portable-ish binaries too.
Re:Janet for Mortals by pnathan on Friday March 31, 2023 @04:47PM (#35393407)
I've never really schemed, only Lisp'd in a common sort of way.

I've heard that some scheme things will compile out to C even.

Re:Janet for Mortals by nerdponx on Friday March 31, 2023 @07:22PM (#35395121)
Yep, Gambit not only compiles to C but also interoperates with it, much like Nim.
Re:Janet for Mortals by rtpg on Friday March 31, 2023 @11:47PM (#35396909)
But you don’t need to give people Rust , just the binaries. The original dig is clearly targeted at Python/Ruby/JS
Re:Janet for Mortals by joshxyz on Saturday April 01, 2023 @08:14PM (#35405637)
you forgot my node_modules folder
Re:Janet for Mortals by schemescape on Friday March 31, 2023 @08:32PM (#35395699)
How big is an executable compiled from Janet using jpm?

I'm sure I just missed it, but I haven't been able to find an answer to that question yet.

Edit: Probably pretty tiny based on this [0], right?

> The entire language (core library, interpreter, compiler, assembler, PEG) is less than 1MB.

Edit again: Found an example [1]:

> And the size is quite reasonable for a non systems language: the Pong example using Raylib is about 2.4MB on Mac OS Catalina.

[0] https://janet-lang.org/

[1] https://github.com/phillvancejr/Cpp-Go-Zig-Odin

Re:Janet for Mortals by ianthehenry on Friday March 31, 2023 @08:57PM (#35395872)
I just compiled a hello world and got 784k on aarch64 macOS with all the defaults.