11 ms·
Portacle – A Portable Common Lisp Development Environment
- Y_Y 9y agoLooks like the project could do with some help making self-contained Linux and OSX packages. Is there a good multi-distro way to do that yet? Ideally one that allows self-modification.
- phoe-krk 9y agoAppImage is a Linux way of deploying this, but it does not allow modification of the resulting binary. You could perhaps try to do it with snapd instead.
- Shinmera 9y agoGiven that packaging things in a self-contained manner is pretty much all this project does, I'm a bit confused about your comment. Could you elaborate?
- Y_Y 9y agoSure. If you look at the main page they go to trouble to explain that you can't separate the executable from its special folder on any of the three platforms. Especially on Mac that's unusual.
- Shinmera 9y agoThat's on purpose, and required, for a variety of reasons. First would be that it cannot be put together into a single executable as it is composed of multiple, separate components, that each rely on a specific structure of the file system being present. This is not something I can control. Second, Portacle is made in such a way that all three platforms can be combined together into a single directory so that it can be run on any system as one, which mandates a shared folder structure. Third, in order to be self-contained, the Portacle installation directory must contain its own configuration and project directories. It makes no sense to allow you to move the executable outside of this, and it would make no sense to put those directories within the .app on, say, mac.
- cup-of-tea 9y agoAt first I thought: "I bet this isn't as good as SLIME." Then I thought: "I should really be more open-minded." Then I looked and thought: "Oh."
- phoe-krk 9y agoPortacle is a standalone bundle of Emacs + SLIME + SBCL + Quicklisp + Git that is meant to be completely self-contained and therefore maximally portable.
- hellofunk 9y agoKinda like the old "lisp in a box" package I remember from a few years ago? It was also SBCL and Emacs and Slime all bundled together as a single "program."
- phoe-krk 9y agoYes. Portacle is a direct replacement for Lisp-in-a-box and Lispstick. Both are heavily unmaintained and outdated by now where Portacle is under active maintenance.
- aidenn0 9y agoLispstick was semi-maintained by me until portacle came out. Any further efforts I make will be to improve portacle.
- rouxz 9y agosupercool stuff
- FractalLP 9y agoNicely done just by looking at the site. I'll have to check it out later.
- flavio81 9y agoPortacle is a god send, it basically allows you to directly start development in Common Lisp without having to install separately (and configure): - SBCL (very fast lisp implementation) - Quicklisp (lisp package manager) - ASDF (builder) - Emacs - SLIME (Common Lisp mode for Emacs) - Paredit (allows easier editing of s-expressions) - and other tools that make CL development a pleasure. The combination of the tools above are effectively a very powerful Common Lisp IDE.
- y03a 9y agoDo you know if installing Portacle will mess with any existing configurations of those things on Linux? In particular Emacs. I have everything backed up but, since I only plan to play with CL, I don't want the headache if it does.
- phoe-krk 9y agoNo, it won't. Portacle is 100% self-contained and does not modify anything outside its home directory.
- vindarel 9y agotest in peace, it doesn't interfere with your emacs config or anything else :)
- Shinmera 9y agoIt should not touch anything outside of its own directory. If it does, then that's a bug and needs to be fixed.
- aerique 9y agoSo as not to scare people potentially interested in Common Lisp away, you can play around with it using just: - SBCL (or whatever Common Lisp implementation you can get your hands on) - a text editor - (maybe rlwrap)
- weeber 9y agoI started to learn Lisp, and struggled after trying to use: - Quicklisp (lisp package manager) - ASDF (builder) They are very complicated to use and understand. Then I abandoned Common Lisp...
- serpix 9y agoHow is Common Lisp for SPA development? I tried to look for anything on either Racket or CL side and pretty much a dead wasteland on that front. I've used re-frame ClojureScript for a few years now but would like to dip my toes in CL, just can't seem to get a head start. Maybe trying CL on the backend first, but even there Clojure dominates..
- flavio81 9y agoThere's not much there for SPA development, perhaps because Lispers generally aren't in that field. That being said, there is Parenscript, which is a Common Lisp subset that compiles server-side to javascript (so it can be used client-side for SPAs, etc). It is an evolved project so it works just fine. There's a lib for doing React dev using Parenscript, as well. Besides that, there is JSCL which is an attempt to bring a full CL implementation on javascript. This is very interesting, however it isn't suited for a SPA. And of course there are a lot of CL libraries for html generation, JSON parsing, web servers, etc. >Maybe trying CL on the backend first I'd say CL is just perfect for the backend side, everything you need should be there.
- preek 9y agoI wouldn’t say that. Clojure has been adopting React as soon as it came out and brought great contributions like Code hot reloading. Something that still has no parallel in JS. Yes, I know about module hot loading with various JS frameworks, but most loose state on reloading. Well, not saying Clojure is better. Just saying that Lispers totally are on the SpA bandwagon. For example the CircleCI frontend is written in ClojureScript.
- flavio81 9y agoYes, you are correct. It's just that I considered "Lisp"="Common Lisp" in this case.
- grovehaw 9y agoThe Potato open source chat platform has a Common Lisp backend and a Clojurescript frontend. There is a fascinating talk by one of the authors on Youtube [0], and the code is on github [1]. A relatively new Web Application Environment called Radiance may also be worth looking at.[2] [0] https://www.youtube.com/watch?v=bl8jQ2wRh6k https://www.youtube.com/watch?v=bl8jQ2wRh6k [1] https://github.com/cicakhq/potato https://github.com/cicakhq/potato [2] https://shirakumo.github.io/radiance/ https://shirakumo.github.io/radiance/
- RobertoG 9y agoNice. Is there something similar for python?
- flavio81 9y agoI've used a "Portable Python" distribution, that bundled CPython with PyCharm and PIP.
- CodeArtisan 9y agoNot emacs but Anaconda is a python distribution with an editor (spyder), a package manager (conda), ... out of the box https://www.anaconda.com/distribution/ https://www.anaconda.com/distribution/
- gkya 9y agoI didn't test the thing (I have my working setup, but wanted to see what this was about), but one suggestion anyways: the screenshot shows a welcome message where it says roughly "Hit C-h h for help". I'd suggest you mention "C-h t" there too, it should be the first communion of every new Emacs user.
- WalterGR 9y agoI wonder how many people press C-h t, get to the following: C-f Forward one character C-n Next line C-b Back one character C-p Previous line ...and close Emacs, never to open it again. The tutorial goes on to say: When you get used to these keys, they're faster than their more familiar equivalents in other applications (Home, End, Ctrl+Left, etc.) because you don't have to move your hands from the touch typing position. That's such ridiculous micro- and premature optimization - especially given that, since Emacs predates modern conventions, almost nothing is natively familiar - that it boggles the mind.
- fiddlerwoaroof 9y agoEmacs keybindings are a standard of their own: they generally work in the shell and other readline based command line utilities. They also work in Cocoa text entry widgets on the Mac.
- gkya 9y agoThose are the keys a usual Emacs users uses maybe hundreds of times in a day. Every laptop I have owned has its arrow keys and Home-PgUp-PgDown-End block in a rather unique place, so even if it's a minor optimisation (it's not), accumulatively it's a very important one. It'd be like replacing a heap allocation with a stack one in a hot function, if that example works like I think it does.
- coldtea 9y ago>so even if it's a minor optimisation (it's not) Has it been measured? I mean, if they have actually measured: 1) the speed difference of using those shortcuts vs arrow/page-up and co when merely typing 2) the same speed difference as a percentage of the overall programming process 3) the impact of such speed difference in programmer productivity (speed translated to results faster or better code with fewer bugs). Or it's just cargo cult?
- Vekz 9y agoA very interesting trend of pre-packaged Emacs distros happening. Spacemacs and doom-emacs are most commonly known for providing general purpose configurations. Portacle looking as a more focused for a specific use case. I would like to see this applied to other language environments to lower the barrier to entry. Maybe Erlang, Haskell, Racket, Ocaml.
- eadmund 9y ago> A very interesting trend of pre-packaged Emacs distros happening. Spacemacs and doom-emacs are most commonly known for providing general purpose configurations. Portacle looking as a mor Bozhidar Batsov's Prelude[0] is another excellent one. It's got a lot of good pre-selected choices, and almost no bad ones. I can highly recommend it. [0] https://github.com/bbatsov/prelude https://github.com/bbatsov/prelude
- escherize 9y agoPrelude is extremely good. It's the best way to get up and running with helm, and only the support for langs you care about (thanks to prelude-modules.el).
- Sir_Substance 9y agoWell now, this is pretty cool.
- vindarel 9y agoA portable Spacemacs built with Portacle would be another great step. AFAIK Portacle is ready to be configured, it just needs to be done.
- Shinmera 9y agoI don't know what Spacemacs does exactly or how it differs from classic Emacs, so I can't really estimate the amount of work required to get it integrated. I assume it would be non-trivial, however, just based on the experience I've had with the process so far.
- hajile 9y agoIt needs EVIL for us vim users.
- flavio81 9y ago>It needs EVIL for us vim users. I guess on the future we could have VPortacle, which would be VIM + SLIMV (Superior Lisp Interaction Mode for Vim, the Vim counterpart to SLIME).
- hajile 9y agoNah, lisp development tools are much better on emacs and EVIL is a very good vim clone.
- Shinmera 9y agoYou should be able to easily install it by putting `(ensure-installed 'evil)` (and evil setup parts) into the user config file, or using Emacs' package-list, which is explained in the help buffer.
- ngvrnd 9y agoReally slick. Kudos.
- billfruit 9y agoIs there anything like this for clojure, with all its tooling rolled into a self contained package? What about for clojurescript?
- jtanza 9y agoClojure For the Brave and True includes an excellent clojure setup for emacs[0] [0] https://www.braveclojure.com/basic-emacs/ https://www.braveclojure.com/basic-emacs/
- vindarel 9y agoIt's a nice tutorial but not a download-and-run app like Portacle is. And it messes up with our config: > Delete ~/.emacs or ~/.emacs.d if they exist.
- scroot 9y agoEvery time I've tried to follow the setup tutorial in that book I've not been able to get something basic to work, like the REPL or the flycheck parser. It's prevented me from really diving in to be honest.
- abhirag 9y agoProbably give Emacs Live (https://overtone.github.io/emacs-live/ https://overtone.github.io/emacs-live/) or Spacemacs (http://spacemacs.org/ http://spacemacs.org/) with the Clojure layer installed a try. Learning Emacs and Clojure both at the same time can be kinda overwhelming though and if you are just interested in Clojure and not Emacs you should probably just start with Cursive (https://cursive-ide.com/ https://cursive-ide.com/)
- scroot 9y agoI'll try one of those -- might be good to have something separate. I use Emacs as my main editor and there's already a lot added onto it. Thanks for the links.
- 9y ago
- agumonkey 9y agoI remember a few similar things, forgot the names, lispbox or something like that. They were very nicely packaged but were not maintained so I'm happy to see new activity in this domain.
- fsloth 9y agoIt's like Visual Studio install for Lisp. I like that the idea of single sane default configuration is promoted over infinite configurability.
- shady-lady 9y agoJust downloaded this a few days ago and it's really cool. Would love to see this all in one for Clojure (incl. self contained standalone emacs)
- leanthonyrn 9y agoCan't wait to get home and try this. Now if we can get this to run in Javascript using WebAssebly that would be a dream come true. Making WebAssembly better for Rust(Common Lisp) https://news.ycombinator.com/item?id=16585315 https://news.ycombinator.com/item?id=16585315
- thinline 9y agoThis is nice, thanks for providing it. Is there any intent to allow for Sly to be used instead of Slime (as an option, I mean)?
- Shinmera 9y agoIf you open up an issue we could look into what's required. From what I can tell it shouldn't need much work, just an additional file that configures defaults similar to https://github.com/portacle/emacsd/blob/master/portacle-slime.el https://github.com/portacle/emacsd/blob/master/portacle-slim..., and a way to defer the loading of either one until after the user file has had a chance to make its customisations.
- divs1210 9y agoThis is great! I'm a Clojure guy who had given up on CL before. Will take it out for a spin for sure! Check out Nightcoders[0] for a similar IDE for Clojure. [0] http://nightcoders.net http://nightcoders.net