Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Redbean web server debugging with ZeroBrane Studio (kulchenko.com)
48 points by paulclinger on Aug 16, 2022 | hide | past | favorite | 20 comments


A nice way to debug is just what we needed.

Paul has been very foundational to a positive spirit in the cosmo/redbean community. Besides this cool work, they're also the author of fullmoon, a web framework for redbean

https://github.com/pkulchenko/fullmoon


Paul's the top contributor to Redbean. He's always believed in and supported the project, even while I was on my SectorLISP hiatus. He's an artist with APIs and I couldn't have designed the Redbean UNIX module as well as I did without his help. It's very welcome to see his ZeroBrane IDE being used to debug Redbean. It's a multiplatform IDE but if you run it on Windows, I like how it has the classic vibe of legendary tools like Borland Delphi or Visual Basic 6. It fills a similar niche as SerenityOS in that sense.


Thank you, Justine, for your kind words and all the work you put into Redbean and Cosmopolitan!


Thanks @grimgrin! BTW, Fullmoon scripts can be debugged too.


And I'll reply here to say that though the article mentions "should work on Linux", I have tested and it _does work on linux_.


Nice; I'll update to mention that. Thank you!


Redbean and Cosmopolitan is like magical alien technology that unites all computing on earth! Now we have a visual debugging method, good work kind ladies & gentleman!

The team is like nuts aliens and I admire their brains.


I love redbean and am actively using it on a project, completely in awe. BUT I'm a little put off by the claims that it is so universal when it doesn't support arm.

This would have been a reasonable claim even a few years ago but specifically because of m1 macs arm is becoming much more common. It also prevents it from being used in one of the situations where you would most want a high performance standalone binary server & environment: raspberry pi.

There are technical solutions to this limitation and they are fine. But they significantly break the universality illusion and benefits.


Redbean runs on M1 Macs with ARM. Daniil Kulchenko pulled off an impressive hack to make that possible. https://github.com/jart/cosmopolitan/issues/429 Redbean also works great on Windows ARM https://youtu.be/CQ7Npip88Yw As for Linux ARM, we're working on it.

If you can point me to any place where we've claimed it's "universal" rather than "runs on nearly all PCs and servers" then let me know and I'll correct the language. It wasn't my intent to put Redbean on the same level as Turing's universal machine. Systems engineering isn't the same thing as computer science, but I think Redbean will help elevate it as a field.


Oh interesting, I didn't realize it was supposed to work on arm. It crashes for me after a minute or two and I didn't see arm explicitly mentioned so figured it wasn't supported. I'll open an issue about it.


Raspberry Pi is only supported with Windows. We intend to support RasPi + Linux in the future. So any time you invest in Redbean today, will pay dividends as support expands in the future.


My question is, how portable is the lua code written for redbean to a GNU/Systemd environment running something like LuaJIT or whichever interpreter would be more compatible. Forgive my lack of knowledge of the lua ecosystem, and not checking out more of the redbean docs.


I may not be understanding the concern correctly so forgive me if not.

Lua code pretty much always ends up tightly coupled to the embedding environment and the API exposed by it. Running a bare lua script against an unmodified interpreter supplied by the OS is just not the normal use case, though certainly possible.

So it's as portable as all lua code, which is up to you but there's rarely a reason to prioritize that too highly. For example the two kinds of lua I've done professionally are web servers and industrial automation. What does it even mean for code to be "portable" between those two? A web server doesn't have a motor and so doesn't expose functions to control one. A conveyor belt doesn't handle http requests so has no functions to send one.

You can definitely come up with library code-type functionality that you'd want in both, and if you write it carefully not to depend on anything outside of the core lua implementation it will run on both. Nothing special about redbean here among the many many other niche uses of lua.


Redbean embraces and extends Lua. That's good since Lua by itself is the most austere language. For instance, here's Lua's standard library as shown by redbean auto-completion: https://redbean.dev/img/lua-stdlib.png It only covers stdio functionality, since that's traditionally the only thing that's been portable across platforms. What we did with Cosmopolitan Libc was make POSIX as a whole portable to things like Windows. Redbean uses it to offer you a much larger breadth of system functionality across platforms https://redbean.dev/img/redbean-unixlib.png so you can benefit from the modern features of your operating system. We've also added language features to Lua that we borrowed from C and Python. https://redbean.dev/#enhancements

If you want to move your code to a different Lua environment, then you can take our APIs with you. For instance, our enhancements to Lua are all open source and built on standardized interfaces. We even offer a 420kb build of just the lua command + our unix module, in the event you ever need just Lua but not the web server too. https://redbean.dev/lua.com


Thanks a trillion. I'm basically hoping to use the code I write targeting redbean + lua + sqlite in an OpenResty (nginx + their set of lua modules) environment without too much mental overhead or god forbid, a parallel implementation. This confirms I'll be good to go!


You will! Please note not all our APIs are present on OpenResty at the moment. However we'd be happy to see them be included. Most of our modules e.g. unix https://github.com/jart/cosmopolitan/blob/master/third_party... only really depend on Lua and POSIX which is available everywhere. You can build our modules in different environments. Obviously only the Cosmopolitan Libc environment is going to let the code run on six operating systems. But since our Lua contributions are based on standardized interfaces and libraries, if you use a different platform to build our code, then it will work there.


The Cosmopolitan ecosystem is really cool, I love seeing updates and improvements. I have not jumped into using redbean yet but I plan too soon. Good work everyone involved!


absolutely loving your work on https://github.com/pkulchenko/fullmoon and redbean, keep it up!


Nice to see Zerobrane is still around. I moved a bit away (for now) from the Lua world, but working with Zerobrane was a blast at that time.


Thanks @riidom! Good times. Hope you'll come back to the Lua world ;).




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

Search: