4 ms·
Why? Other than an academic exercise, what's the point? One could make plenty of arguments for why Rust is a better language than C, but...if it ain't broke, et
by caymanjim 8y ago
Why? Other than an academic exercise, what's the point? One could make plenty of arguments for why Rust is a better language than C, but...if it ain't broke, etc. This seems like an enormous exercise with little if any payoff, and unless the core Emacs community decides to jump on board, it's just a pointless fracturing.
- dmitriid 8y agoOh. Emacs is broken. For example: “Internally, Emacs still belives it’s a text program, and we pretend Xt is a text terminal, and we pretend GTK is an Xt toolkit.” [1] If this fork removes all the legacy cruft and hacks, it’s only for the better. [1] https://m.facebook.com/notes/daniel-colascione/buttery-smooth-emacs/10155313440066102/ https://m.facebook.com/notes/daniel-colascione/buttery-smoot...
- tedunangst 8y agoWhat is it about rust that makes it impossible to pretend Xt is a text terminal?
- dmitriid 8y agoWow. If any program had ”we have to pretend to be a deprecated system that pretends to be an even more deprecated system that pretends to be an obsolete system to prevent Emacs from flickering”, HN would crucify it. With Emacs? Oh, it’s perfect!
- Latteland 8y agoIt's actually important that emacs is a text program and also has a gui version. All the time I use a program on the command line that needs me to edit something, so it pops up a textmode (vt100 ui forever) emacs that I can edit a file in. Sometimes in other contexts this can happen where it's an xwindows gui. When I'm on a windows machine I can do either also.
- dmitriid 8y agoOk. Let’s say we remove this: ”we have to pretend to be a deprecated system that pretends to be an even more deprecated system that pretends to be an obsolete system to prevent Emacs from flickering”. How will it make Emacs not a text program with a GUI component?
- Latteland 8y agoI don't care about the implementation (if elisp works the same and the experience is the same), it just needs to be a text mode only editor and a gui editor.
- deleted 8y ago[deleted]
- TeMPOraL 8y agoI don't have an opinion on the way it does that, but the fact that it does think/work it's a text program is actually a feature, not a bug. Something like 99% of built-in features and 95% of features added by plugins work identically in terminal frames over SSH. I fear if Emacs was remade with graphics at the forefront and text as a secondary concern, we'd lose a lot of interoperability this "text program" thinking brings to the table. Being able to work with an UI in a way you would with text files - jumping, copy-pasting, editing the UI itself, all with the exact same shortcuts and conveniences you use for programming - is incredibly powerful and something not really replicated elsewhere. I mean, number one complaint against TUIs and GUIs is that the data is locked inside, and you can't easily take it out and send elsewhere. With Emacs UIs, it's not true - if need be, you can select, copy and paste the whole thing, UI included, and it looks good in a text file and can be operated on programmatically. -- Further improving performance of elisp and enabling true multithreading/async: that would be a huge breath of fresh air in Emacs.
- dmitriid 8y agoWhich part of ”we have to pretend to be a deprecated system that pretends to be an even more deprecated system that pretends to be an obsolete system to prevent Emacs from flickering” is a feature?
- TeMPOraL 8y agoThat is an implementation detail. The feature is "witness the firepower of this fully armed and operational battle station/editor, of which 99% works and looks the same both in GUI and terminal, at zero extra effort from feature developers". Whether or not the implementation is truly necessary to achieve the feature, that I don't know.
- dmitriid 8y agoIt’s not an implementation detail. It’s decades of technical debt, and it’s very strange to see it defended. When a simple task of making a program not flicker (a solved, well understood and fairly trivial problem) requires quite a sizable effort, it’s no longer just an “implementation detail”. LOL at people decrying the bloat and inefficiency of Electron apps and calling this a perfect program with just implementation details: — start quote — GNU Emacs is an old-school C program emulating a 1980s Symbolics Lisp Machine emulating an old-fashioned Motif-style Xt toolkit emulating a 1970s text terminal emulating a 1960s teletype. Compiling Emacs is a challenge. Adding modern rendering features to the redisplay engine is a miracle. — end quote —
- yason 8y agoThis fork aims to replace the C parts with Rust. I didn't read they intend to redesign Emacs itself. Emacs is a programming environment so changing such fundamentals would make it a different editor. There are existing apps and libraries that depend on the way Emacs works now.
- m463 8y agoI've always thought that if emacs lisp were replaced with python, I would be very happy.
- taeric 8y agoI'd wager there are a fair number of us that are quite glad not to have python as the main language. I am curious if there are specific things about elisp that you dislike.
- m463 8y agoI do not want to throw away emacs, I just think a python port would be enjoyable, for me. I find python very expressive. When I work in elisp, I seem to find it cumbersome to do many of the mundane things, like using a local variable, and if/then/else with multiple statments, loops (continue? break?), oo stuff, etc. a contrived example: (let ((foo)) (if cond (progn (setq foo 10) (bar)) (progn (setq foo 20) (baz)))) if cond: foo = 10 bar() else: foo = 20 baz() To be clear, yes, I know how to do these things, and I've written elisp for many years. Everything I can do in python, I can also do in lisp. It's just that python seems to read and write easily for me.
- tincholio 8y agoYour example is not necessarily contrived, but it is not very representative, either. Throw in a couple of proper lambdas in there, and suddenly python won't look as nice.
- m463 8y agoI do stuff like this all the time: mysorted = sorted(mydict, key=lambda t: t['Price']) but generally I write out functions in python.
- testcross 8y agoThis isn't the sortest elisp equivalent, no? I'm not a pro, but this should do the same thing for example. (if cond (progn (setq foo 10) (bar)) (setq foo 20) (baz))
- agentultra 8y agoThis was my first thought. As a user of remacs I'll never notice any tangible difference to emacs if the remacs folks are doing their job well. At least not for a few more years perhaps. This may have a payoff for maintainers. If they can convince enough of the core developers to join them or build a large enough community. If their theory is right it's easier to develop and maintain Rust code than C code and if it makes more people happy we may see remacs able to forge ahead with more/better features, faster than upstream emacs. But from my experience with projects like this it's going to take them a long time to catch up and then someone down the line is going to have to make the decision about whether to break from upstream or to follow it.
- DennisP 8y agoThe page mentions some reasons: "Forking is a longstanding tradition in the Emacs community...By forking, we can explore new development approaches. We can use a pull request workflow with integrated CI. We can drop legacy platforms and compilers."