* Consideration for Rust contributions in Emacs [not found] <f2ee2f1d-332f-4707-bd9e-23444c34749f@Spark> @ 2023-01-21 22:48 ` Troy Hinckley 2023-01-22 7:44 ` Po Lu via Emacs development discussions. ` (2 more replies) 0 siblings, 3 replies; 41+ messages in thread From: Troy Hinckley @ 2023-01-21 22:48 UTC (permalink / raw) To: emacs-devel [-- Attachment #1: Type: text/plain, Size: 1628 bytes --] I've had a discussion with several people recently about future possibilities of Rust in GNU Emacs core. I could not find an answer to this on the archives, so if it has been resolved previously please point me to that thread. Let assume for the sake of this discussion that there was a some Rust code that someone wanted to contribute and the maintainers wanted the functionality it provided. What would be the consideration/objections? Here are few that we came up with: 1. The Rust tool-chain is Apache licensed and so is LLVM. There is work on a GCC backend, but it is not production ready yet. Would Emacs allow the current Rust tool-chain? 2. LLVM (and hence Rust) support fewer targets than GCC. Are there certain target that LLVM doesn’t support that are important to Emacs? 3. Many Rust libraries (crates) are MIT and/or Apache licensed. Do all Libraries used by GNU Emacs need to be GPL or is it sufficient to have a GPL compatible license? 4. How sizable of a contribution would be needed for the maintainers to accept Rust in Emacs core? Would auxiliary functionality be considered (such as Rust in the Linux Kernel) or would it need to have major impact. 5. Concerns over having more than one core language in GNU Emacs. 6. Concerns over using such a new language. Rust still changes at a fast pace relative to C and it’s future is less certain then a more established language. 7. Concerns over support for Rust being a distraction from other development work. 8. I assume that FSF copyright would still be a requirement. I just bring it up so no one else has to. Sincerely, Troy Hinckley [-- Attachment #2: Type: text/html, Size: 2020 bytes --] ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-01-21 22:48 ` Consideration for Rust contributions in Emacs Troy Hinckley @ 2023-01-22 7:44 ` Po Lu via Emacs development discussions. 2023-01-22 11:05 ` Daniel Martín 2023-01-23 2:00 ` Sean Allred 2 siblings, 0 replies; 41+ messages in thread From: Po Lu via Emacs development discussions. @ 2023-01-22 7:44 UTC (permalink / raw) To: Troy Hinckley; +Cc: emacs-devel Troy Hinckley <comms@dabrev.com> writes: > Let assume for the sake of this discussion that there was a some Rust > code that someone wanted to contribute and the maintainers wanted the > functionality it provided. What would be the consideration/objections? It is hard to say for certain, because you have not said what code you have in mind. > 1 The Rust tool-chain is Apache licensed and so is LLVM. There is work > on a GCC backend, but it is not production ready yet. Would Emacs > allow the current Rust tool-chain? No. Emacs code for a platform where GCC is available must be written so that it can be compiled with GCC. We already have this policy in place, and it prevents us from using Objective-C features that are only supported by Clang in the Nextstep. > 2 LLVM (and hence Rust) support fewer targets than GCC. Are there > certain target that LLVM doesn’t support that are important to Emacs? For example: MS-DOS, via DJGPP. Or, Windows 9X. I use Emacs to code-convert files on a Windows 98 machine used to run government software. And also the various Unix systems that currently do not support LLVM: HP/UX, and AIX. > 3 Many Rust libraries (crates) are MIT and/or Apache licensed. Do all > Libraries used by GNU Emacs need to be GPL or is it sufficient to have > a GPL compatible license? I would be more concerned about how Rust libraries are distributed. Isn't the Rust package manager one of those which download libraries directly from a source code repository? > 4 How sizable of a contribution would be needed for the maintainers to > accept Rust in Emacs core? Would auxiliary functionality be considered > (such as Rust in the Linux Kernel) or would it need to have major > impact. It will probably not be accepted. > 5 Concerns over having more than one core language in GNU Emacs. Yes. > 6 Concerns over using such a new language. Rust still changes at a > fast pace relative to C and it’s future is less certain then a more > established language. Yes. Rust is not widely available at all, while C is available for every platform, from 8 bit microcontrollers, to 16 and 24-bit digital signal processors, and 32-bit and 64-bit consumer computers, and will remain that way for the foreseeable future. Emacs is a portable program written in C. Thus, any code that is not strictly a port to some other platform should also be written in standard C99. In the past, people wanted to rewrite Emacs in Scheme. Then, it was C++. Then, it was Java. Now, it is Rust. Part of the reason Emacs has existed for so long is that it has not given in to those demands, and remains a highly portable program, written in a standardized language, that has remained more or less constant since it Emacs was written. Rust, on the other hand, frequently releases breaking changes with new versions of the programming language, and is not standardized in any way. This shows in that even an operating system supposedly written in Rust provides a C toolchain and C runtime library. \f Now, judging by recent internet chatter, you probably think Rust will magically allow Emacs Lisp to run on different threads. Some people seem to have this idea that because the Rust compiler will try to prevent two threads from having access to a variable at the same time, writing Emacs in Rust will, as if by magic, allow multiple Lisp threads to run at once. That is not true. The Rust compiler does not try to avoid concurrency pitfalls aside from the simple data race: for example, locking a non-recursive mutex twice is not only a programming error, it is undefined behavior! In addition, locking (and not locking) needs to be carefully thought out, or it will slow down single threaded execution. For example, a common pattern found inside Emacs code is: for (; CONSP (tem); tem = XCDR (tem)) /* Do something with XCAR (tem) */; XCAR and XCDR work fine unchanged on most machines without needing any kind of locking, as Lisp_Cons is always aligned to Lisp_Object. However, it does not work on two machines, which either need explicit memory barrier instructions (or in the case of vectors, mutexes): On the (64-bit) Alpha, memory ordering across CPUs is extremely lax, and without the appropriate barrier instructions, even aligned reads and writes of 64 bit words are not atomic. On x86 (and possibly other platforms) with --with-wide-int, reads and writes of Lisp_Object require separate moves and stores to and from two 32 bit registers, which is obviously not atomic. Then, if XCDR (tem) reads from a cons whose cdr cell is in the process of being written to, then it may dereference a nonsense pointer. And contrasting that, this code is perfectly safe in C, on x86. The assert will never trigger: static unsigned int foo; thread_1 () { foo++; } thread_2 () { assert (foo <= 1); } main () { /* start thread_1 and thread_2 at the same time. */ } I believe the Rust compiler will force you to add some code in that case. Imagine how much overhead it would add if Emacs had to lock a Lisp_Cons before reading or writing to it. But the Lisp interpreter is the easy part, especially since we already have much of the necessary interpreter state moved off into struct thread_state. A lot of other code which is algorithmically non reentrant will have to be made reentrant, and papering mutexes and atomics over them to satisfy compile-time checks will not do that. For example, how do you propose to rewrite process.c to allow two threads to enter wait_reading_process_output at the same time? Who gets SIGCHLD? Who gets to read process output? In which thread do process filters run? In the end, you will have to do the same work you would need to in C, with the added trouble of adding code in a new language, making everyone else learn the new language, while throwing portability down the drain. That doesn't sound like a good tradeoff to me. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-01-21 22:48 ` Consideration for Rust contributions in Emacs Troy Hinckley 2023-01-22 7:44 ` Po Lu via Emacs development discussions. @ 2023-01-22 11:05 ` Daniel Martín 2023-01-22 14:04 ` Po Lu 2023-01-24 3:52 ` Richard Stallman 2023-01-23 2:00 ` Sean Allred 2 siblings, 2 replies; 41+ messages in thread From: Daniel Martín @ 2023-01-22 11:05 UTC (permalink / raw) To: Troy Hinckley; +Cc: emacs-devel Troy Hinckley <comms@dabrev.com> writes: > I've had a discussion with several people recently about future > possibilities of Rust in GNU Emacs core. I could not find an answer to > this on the archives, so if it has been resolved previously please > point me to that thread. > > Let assume for the sake of this discussion that there was a some Rust > code that someone wanted to contribute and the maintainers wanted the > functionality it provided. What would be the consideration/objections? > Here are few that we came up with: > > 1. The Rust tool-chain is Apache licensed and so is LLVM. There is work on a GCC backend, but it is not production ready yet. Would Emacs allow the current Rust tool-chain? > 2. LLVM (and hence Rust) support fewer targets than GCC. Are there certain target that LLVM doesn’t support that are important to Emacs? > 3. Many Rust libraries (crates) are MIT and/or Apache licensed. Do all Libraries used by GNU Emacs need to be GPL or is it sufficient to have a GPL compatible license? > 4. How sizable of a contribution would be needed for the maintainers > to accept Rust in Emacs core? Would auxiliary functionality be > considered (such as Rust in the Linux Kernel) or would it need to have > major impact. > 5. Concerns over having more than one core language in GNU Emacs. > 6. Concerns over using such a new language. Rust still changes at a fast pace relative to C and it’s future is less certain then a more established language. > 7. Concerns over support for Rust being a distraction from other development work. > 8. I assume that FSF copyright would still be a requirement. I just bring it up so no one else has to. > The first question to ask is if and how Rust would make the Emacs codebase better. Do you have any concrete examples of that? I don't think that the alleged benefits of Rust, even when used in small parts of new functionality, would outweigh the costs of concerns 5, 6, and 7, at least. This answer is not exclusive to Rust. I don't see any clear net benefit from using another language along with C (even C++) in Emacs core. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-01-22 11:05 ` Daniel Martín @ 2023-01-22 14:04 ` Po Lu 2023-01-22 23:16 ` Troy Hinckley 2023-01-24 3:52 ` Richard Stallman 1 sibling, 1 reply; 41+ messages in thread From: Po Lu @ 2023-01-22 14:04 UTC (permalink / raw) To: Daniel Martín; +Cc: Troy Hinckley, emacs-devel Daniel Martín <mardani29@yahoo.es> writes: > This answer is not exclusive to Rust. I don't see any clear net benefit > from using another language along with C (even C++) in Emacs core. Exactly. Now, if someone wants to contribute a port to Redox OS, and the port code uses Rust, that would be something else. For example, the NS port uses Objective-C, the Haiku port uses C++, and the Android port uses Java. However, Redox has a C runtime, so I doubt that will be necessary. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-01-22 14:04 ` Po Lu @ 2023-01-22 23:16 ` Troy Hinckley 2023-01-23 5:55 ` Po Lu 2023-01-24 3:49 ` Richard Stallman 0 siblings, 2 replies; 41+ messages in thread From: Troy Hinckley @ 2023-01-22 23:16 UTC (permalink / raw) To: Daniel Martín, Po Lu; +Cc: emacs-devel [-- Attachment #1: Type: text/plain, Size: 855 bytes --] Thank you for your replies. This matches my expectations, but I wanted to confirm. One thing I still have an open question on is using non-GPL but GPL-compatible libraries. Ignoring Rust, would that be accepted in C? Or do all libraries need to be GPL as well? On Jan 22, 2023 at 7:04 AM -0700, Po Lu <luangruo@yahoo.com>, wrote: > Daniel Martín <mardani29@yahoo.es> writes: > > > This answer is not exclusive to Rust. I don't see any clear net benefit > > from using another language along with C (even C++) in Emacs core. > > Exactly. > > Now, if someone wants to contribute a port to Redox OS, and the port > code uses Rust, that would be something else. > > For example, the NS port uses Objective-C, the Haiku port uses C++, and > the Android port uses Java. > > However, Redox has a C runtime, so I doubt that will be necessary. [-- Attachment #2: Type: text/html, Size: 1350 bytes --] ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-01-22 23:16 ` Troy Hinckley @ 2023-01-23 5:55 ` Po Lu 2023-01-24 3:49 ` Richard Stallman 1 sibling, 0 replies; 41+ messages in thread From: Po Lu @ 2023-01-23 5:55 UTC (permalink / raw) To: Troy Hinckley; +Cc: Daniel Martín, emacs-devel Troy Hinckley <comms@dabrev.com> writes: > One thing I still have an open question on is using non-GPL but GPL-compatible libraries. Ignoring Rust, would that be accepted in C? Or do all > libraries need to be GPL as well? All libraries are ok as long as they are GPL compatible. It would also be morally ok as long as the libraries are free software. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-01-22 23:16 ` Troy Hinckley 2023-01-23 5:55 ` Po Lu @ 2023-01-24 3:49 ` Richard Stallman 1 sibling, 0 replies; 41+ messages in thread From: Richard Stallman @ 2023-01-24 3:49 UTC (permalink / raw) To: Troy Hinckley; +Cc: mardani29, luangruo, emacs-devel [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > One thing I still have an open question on is using non-GPL but > GPL-compatible libraries. Ignoring Rust, would that be accepted in > C? Or do all libraries need to be GPL as well? It is fine for Emacs to link in a general-purpose library which is releasde under a GPL-compatible free license, as long as that library is developed, released and built separately from Emacs, and comes with clear instructions about how to call it properly. We can be flexible about this because we don't have to maintain that library. We only have to use it. Emacs links in many such libraries already. -- Dr Richard Stallman (https://stallman.org) Chief GNUisance of the GNU Project (https://gnu.org) Founder, Free Software Foundation (https://fsf.org) Internet Hall-of-Famer (https://internethalloffame.org) ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-01-22 11:05 ` Daniel Martín 2023-01-22 14:04 ` Po Lu @ 2023-01-24 3:52 ` Richard Stallman 2023-01-24 6:52 ` Dr. Arne Babenhauserheide 1 sibling, 1 reply; 41+ messages in thread From: Richard Stallman @ 2023-01-24 3:52 UTC (permalink / raw) To: Daniel MartÃn; +Cc: comms, emacs-devel [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] Having parts of Emacs written in some other language would require future Emacs maintainers to know one more language. No matter what that language that might be, its use in Emacs would be a big added burden. This reason is very important, and is by itself enough resaon to say no to whatever other language might be suggested. There are specific reasons not to use Rust in particular. Rust changes too fast; using it in a very large program for which we try to keep old versions maintainable would be unwise. Cargo uses a library archive which includes nonfree libraries, so we should not publicly refer to its existence. GCC is a GNU package and we do not want to replace a GNU package with anything else. LLVM is not copylefted; using a noncopylefted package in place of a copylefted package would be a setback for our cause. Any of these reasons is sufficient not to incorporate Rust code. Rust has a legal problem as well: the trademark licenses of Rust is unclear, and I can't determine whether Rust is free software. It is potentially harmful for anyone to use Rust at all as long as that remains the case. The Rust developers could cure that one problem by explaining concretely what that license requires, specifically for how to remove the Rust and Cargo trademarks from the compiler. I asked them over a year ago, but they never responded. -- Dr Richard Stallman (https://stallman.org) Chief GNUisance of the GNU Project (https://gnu.org) Founder, Free Software Foundation (https://fsf.org) Internet Hall-of-Famer (https://internethalloffame.org) ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-01-24 3:52 ` Richard Stallman @ 2023-01-24 6:52 ` Dr. Arne Babenhauserheide 0 siblings, 0 replies; 41+ messages in thread From: Dr. Arne Babenhauserheide @ 2023-01-24 6:52 UTC (permalink / raw) To: rms; +Cc: Daniel MartÃn, comms, emacs-devel [-- Attachment #1: Type: text/plain, Size: 894 bytes --] Richard Stallman <rms@gnu.org> writes: > GCC is a GNU package and we do not want to > replace a GNU package with anything else. LLVM is not copylefted; > using a noncopylefted package in place of a copylefted package would > be a setback for our cause. GCCrs¹ is a GCC frontend written for Rust, currently expected to be included in GCC 13. But even when using that to compile, people developing Rust software would still be dependent on LLVM for now², because GCCrs currently only compiles but does no actual borrow-checking. ¹: https://rust-gcc.github.io/ This is via Github, but it does not require unfree Javascript to access. It works even in M-x eww. ²: Implementing the borrow checker is planned, but it’s not included in the initial release. Best wishes, Arne -- Unpolitisch sein heißt politisch sein, ohne es zu merken. draketo.de [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 1125 bytes --] ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-01-21 22:48 ` Consideration for Rust contributions in Emacs Troy Hinckley 2023-01-22 7:44 ` Po Lu via Emacs development discussions. 2023-01-22 11:05 ` Daniel Martín @ 2023-01-23 2:00 ` Sean Allred 2023-01-23 3:37 ` Troy Hinckley 2023-01-23 7:32 ` Robert Pluim 2 siblings, 2 replies; 41+ messages in thread From: Sean Allred @ 2023-01-23 2:00 UTC (permalink / raw) To: Troy Hinckley; +Cc: emacs-devel Hi Troy! Thanks for raising the topic. I think this is my first time posting on the list, but this is a topic that means quite a bit to me (and is something I've had some experience with in other projects). Using Rust in Emacs is an exciting prospect that draws on the general buzz that Rust has been generating. I personally enjoy using Rust for personal and professional projects alike. As you've noticed, though, its use in Emacs is not without its concerns. Troy Hinckley <comms@dabrev.com> writes: > I've had a discussion with several people recently about future > possibilities of Rust in GNU Emacs core. I could not find an answer to > this on the archives, so if it has been resolved previously please > point me to that thread. > > Let assume for the sake of this discussion that there was a some Rust > code that someone wanted to contribute and the maintainers wanted the > functionality it provided. What would be the consideration/objections? I would add to your list of considerations that Rust is designed for an almost singular purpose that it performs very well: memory-safety. I don't pay *that* much attention to this list, but I also haven't seen many bug reports concerning memory mismanagement -- and I certainly haven't experienced any such bugs myself. I suspect this is due to the relatively small C core that provides a memory-safe runtime for the elisp that comprises the rest of emacs. Assuming memory-safety isn't a demonstrated problem that emacs development struggles with, incorporating Rust into its dev pipeline is going to be a very hard sell: Does Rust actually solve a problem emacs has? I don't know that the answer is 'no'. Frankly, I don't think I'm qualified to offer an opinion here. More importantly to your goals, I don't see where you've shown why you believe the answer is 'yes'. In general (and this certainly doesn't apply to just emacs), to introduce a new technology into a stable system, you'll need to be able to demonstrate concrete gains that *measurably* outweigh the costs. Introducing a new technology will inherently destablize any affected components of the system -- this is very difficult to justify in any large project. Feel-good syntax isn't usually a compelling reason -- especially in a project that's developed a lisp runtime where syntax is already cheap to develop. The last significant endeavor in this direction that I'm aware of was Remacs -- but it appears development has petered out for one reason or another. I don't think it's a lost cause in the grand scheme of things, but this clearly is not a ship that can/would/should change course very easily. -- If it is something you are comfortable using and they meet your goals, I'd like to point out the recent support for dynamic modules. Rust has pretty solid FFI support in my experience. If needed, you may(?) have better luck submitting patches to hook into / advise core functions in lisp -- and then using those hooks in a dynamic module implemented in the language of your choice. -Sean -- Sean Allred ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-01-23 2:00 ` Sean Allred @ 2023-01-23 3:37 ` Troy Hinckley 2023-01-23 12:25 ` Po Lu 2023-01-23 13:21 ` Dr. Arne Babenhauserheide 2023-01-23 7:32 ` Robert Pluim 1 sibling, 2 replies; 41+ messages in thread From: Troy Hinckley @ 2023-01-23 3:37 UTC (permalink / raw) To: Sean Allred; +Cc: emacs-devel [-- Attachment #1: Type: text/plain, Size: 4060 bytes --] Thanks Sean! I should have been clearer in my question that I don’t have any Rust code that I want to contribute to GNU Emacs, and I don’t know anyone who does. This is a hypothetical. I don’t think Rust should be added to the Emacs core. The core is well tested and battle hardened C and Rust would not add much value. I guess a clearer question would be: are there any fundamental/ideological reasons Rust could not be part of GNU Emacs? Ignoring technical trade offs and complexity etc. Po Lu already provided one; Emacs needs to support old platforms like MS-DOS. So that rules out LLVM. Are there others? I am particularly interested in issues surrounding licensing, such as the question I posed above about libraries. On Jan 22, 2023 at 7:30 PM -0700, Sean Allred <allred.sean@gmail.com>, wrote: > Hi Troy! > > Thanks for raising the topic. I think this is my first time posting on > the list, but this is a topic that means quite a bit to me (and is > something I've had some experience with in other projects). > > Using Rust in Emacs is an exciting prospect that draws on the general > buzz that Rust has been generating. I personally enjoy using Rust for > personal and professional projects alike. As you've noticed, though, its > use in Emacs is not without its concerns. > > Troy Hinckley <comms@dabrev.com> writes: > > I've had a discussion with several people recently about future > > possibilities of Rust in GNU Emacs core. I could not find an answer to > > this on the archives, so if it has been resolved previously please > > point me to that thread. > > > > Let assume for the sake of this discussion that there was a some Rust > > code that someone wanted to contribute and the maintainers wanted the > > functionality it provided. What would be the consideration/objections? > > I would add to your list of considerations that Rust is designed for an > almost singular purpose that it performs very well: memory-safety. I > don't pay *that* much attention to this list, but I also haven't seen > many bug reports concerning memory mismanagement -- and I certainly > haven't experienced any such bugs myself. I suspect this is due to the > relatively small C core that provides a memory-safe runtime for the > elisp that comprises the rest of emacs. Assuming memory-safety isn't a > demonstrated problem that emacs development struggles with, > incorporating Rust into its dev pipeline is going to be a very hard > sell: > > Does Rust actually solve a problem emacs has? > > I don't know that the answer is 'no'. Frankly, I don't think I'm > qualified to offer an opinion here. More importantly to your goals, I > don't see where you've shown why you believe the answer is 'yes'. > > In general (and this certainly doesn't apply to just emacs), to > introduce a new technology into a stable system, you'll need to be able > to demonstrate concrete gains that *measurably* outweigh the costs. > Introducing a new technology will inherently destablize any affected > components of the system -- this is very difficult to justify in any > large project. Feel-good syntax isn't usually a compelling reason -- > especially in a project that's developed a lisp runtime where syntax is > already cheap to develop. > > The last significant endeavor in this direction that I'm aware of was > Remacs -- but it appears development has petered out for one reason or > another. I don't think it's a lost cause in the grand scheme of things, > but this clearly is not a ship that can/would/should change course very > easily. > > -- > > If it is something you are comfortable using and they meet your goals, > I'd like to point out the recent support for dynamic modules. Rust has > pretty solid FFI support in my experience. If needed, you may(?) have > better luck submitting patches to hook into / advise core functions in > lisp -- and then using those hooks in a dynamic module implemented in > the language of your choice. > > -Sean > > -- > Sean Allred [-- Attachment #2: Type: text/html, Size: 4849 bytes --] ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-01-23 3:37 ` Troy Hinckley @ 2023-01-23 12:25 ` Po Lu 2023-01-24 2:24 ` Lynn Winebarger 2023-04-11 12:39 ` Po Lu via Emacs development discussions. 2023-01-23 13:21 ` Dr. Arne Babenhauserheide 1 sibling, 2 replies; 41+ messages in thread From: Po Lu @ 2023-01-23 12:25 UTC (permalink / raw) To: Troy Hinckley; +Cc: Sean Allred, emacs-devel Troy Hinckley <comms@dabrev.com> writes: > Thanks Sean! > > I should have been clearer in my question that I don’t have any Rust code that I want to contribute to GNU Emacs, and I don’t know anyone who > does. This is a hypothetical. > > I don’t think Rust should be added to the Emacs core. The core is well tested and battle hardened C and Rust would not add much value. > > I guess a clearer question would be: are there any fundamental/ideological reasons Rust could not be part of GNU Emacs? Ignoring technical > trade offs and complexity etc. There are no real ideological reasons. The fundamental reason, however, is that Rust is an unstable language, it is difficult to learn, and it is not portable. And Emacs has a long history of being asked, by others, to rewrite itself in a such languages for benefits that never materialize. > Are there others? I am particularly interested in issues surrounding > licensing, such as the question I posed above about libraries. As I explained earlier, it is probably morally fine if the library is free software, as long as it does not promote SaaSS, load proprietary software itself (think web browsers), et cetera. For it to be legal, the library must be GPL compatible, or a system library, but nothing says it has to be under the GPL itself. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-01-23 12:25 ` Po Lu @ 2023-01-24 2:24 ` Lynn Winebarger 2023-01-24 2:47 ` Etienne Prud'homme 2023-01-24 2:49 ` Po Lu 2023-04-11 12:39 ` Po Lu via Emacs development discussions. 1 sibling, 2 replies; 41+ messages in thread From: Lynn Winebarger @ 2023-01-24 2:24 UTC (permalink / raw) To: Po Lu; +Cc: Troy Hinckley, Sean Allred, emacs-devel [-- Attachment #1: Type: text/plain, Size: 483 bytes --] On Mon, Jan 23, 2023, 7:26 AM Po Lu <luangruo@yahoo.com> wrote: > > As I explained earlier, it is probably morally fine if the library is > free software, as long as it does not promote SaaSS, load proprietary > software itself (think web browsers), et cetera. > I'm not familiar with the SaaSS acronym. I assume it's a modification of "Software as a Service", but Google is not showing me anything with the additional "S". Could you elaborate or point to a definition? Lynn > [-- Attachment #2: Type: text/html, Size: 1050 bytes --] ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-01-24 2:24 ` Lynn Winebarger @ 2023-01-24 2:47 ` Etienne Prud'homme 2023-01-24 2:49 ` Po Lu 1 sibling, 0 replies; 41+ messages in thread From: Etienne Prud'homme @ 2023-01-24 2:47 UTC (permalink / raw) To: Lynn Winebarger; +Cc: emacs-devel > I'm not familiar with the SaaSS acronym. I assume it's a modification of "Software as a Service", but Google is not showing me anything with the additional "S". Could you elaborate or point to a definition? Service as a Software Substitute[1]. It's a (rightly) pejorative term. I think the term was coined by Richard Stallman. [1] https://www.gnu.org/philosophy/who-does-that-server-really-serve.en.html On Mon, Jan 23, 2023 at 9:25 PM Lynn Winebarger <owinebar@gmail.com> wrote: > > On Mon, Jan 23, 2023, 7:26 AM Po Lu <luangruo@yahoo.com> wrote: >> >> >> As I explained earlier, it is probably morally fine if the library is >> free software, as long as it does not promote SaaSS, load proprietary >> software itself (think web browsers), et cetera. > > > I'm not familiar with the SaaSS acronym. I assume it's a modification of "Software as a Service", but Google is not showing me anything with the additional "S". Could you elaborate or point to a definition? > > Lynn ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-01-24 2:24 ` Lynn Winebarger 2023-01-24 2:47 ` Etienne Prud'homme @ 2023-01-24 2:49 ` Po Lu 1 sibling, 0 replies; 41+ messages in thread From: Po Lu @ 2023-01-24 2:49 UTC (permalink / raw) To: Lynn Winebarger; +Cc: Troy Hinckley, Sean Allred, emacs-devel Lynn Winebarger <owinebar@gmail.com> writes: > I'm not familiar with the SaaSS acronym. I assume it's a modification of "Software as a Service", but Google is not showing me anything with > the additional "S". Could you elaborate or point to a definition? See https://www.gnu.org/philosophy/words-to-avoid.html#SaaS. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-01-23 12:25 ` Po Lu 2023-01-24 2:24 ` Lynn Winebarger @ 2023-04-11 12:39 ` Po Lu via Emacs development discussions. 2023-04-11 18:23 ` Dr. Arne Babenhauserheide ` (3 more replies) 1 sibling, 4 replies; 41+ messages in thread From: Po Lu via Emacs development discussions. @ 2023-04-11 12:39 UTC (permalink / raw) To: Troy Hinckley; +Cc: Sean Allred, emacs-devel Po Lu <luangruo@yahoo.com> writes: > There are no real ideological reasons. This has changed. From my POV, Rust is now completely unsuitable for writing code for Emacs. The Rust Foundation has published a draft trademark policy. They will apply this policy to all use of the Rust trademark, including towards documentation surrounding other implementations of the Rust language. The primary problem with this proposed policy is its attitude towards use of their trademarks in copies of software, especially modified versions of the Rust compiler. From their policy: 4.1.1 Distribution of unmodified source code or unmodified executable code we have compiled When you redistribute an unmodified copy of the Rust software, you are not changing the quality or nature of it. Therefore, you may retain the Word Marks and the Logos we have placed on the software to identify your redistribution -- whether that redistribution is made via physical products, physical media, or download, and whether that redistribution consists of unmodified source code or executables. If you autogenerate unmodified documentation created by the Project using rustdoc, you do not have to remove any Word Marks or Logos. This only applies if you are redistributing an official distribution from the Rust Project that has not been changed in any way. 4.1.2 Distribution of executable code that you have compiled, or modified code See [cross-reference to ## Uses for which we are granting a license; ### Distribution of modified software] for cases where you may modify the software and use the Marks and Logos for it. You may also use the Word Marks, but not the Logos, to truthfully describe the origin of the software that you are providing, that is, that the code you are distributing is a modification of our software. You may say, for example, ``compiled from the Rust source at GitHub'' or that "we have included tools taken from the Rust project in our toolchain.'' You must also remove our Logos. If you are creating documentation and have modified it, you do not have to remove any Word Marks or Logos that appear in screenshots or in the text for illustrative or explanatory purposes. However, you must remove them where the use suggest that the Rust Foundation has published or endorsed your version of the documentation, such as on the cover. Of course, you can place your own trademarks or logos on versions of the software to which you have made modifications, because by modifying the software you have become the origin of that exact version. 4.1.3 Statements about compatibility, interoperability or derivation You may use the Word Marks, but not the Logos, to truthfully describe the relationship between your software and ours. Our Marks should be used after a verb or preposition that describes the relationship between your software and ours. So you may say, for example, "the Dungeness tool for the Rust compiler" but may not say "the Dungeness Rust compiler," which suggests that Dungeness is the source of the Rust compiler. Some other examples that may work for you are: [Your software] is written in the Rust language [Your software] can compile software written in Rust [Your software] can be used in the Rust compiler toolchain [Your software] is based on the official Rust compiler 4.1.4 Rust the language versus Rust products and Project Rust is the name of a language, the name for software, the name of the project, and the name of the community. It must always be clear which one you are referring to when you use ``Rust.'' If there is a possibility of misinterpretation, you should amend your wording so that there can be no misunderstanding. For example, the term ``Rust compiler'' can be interpreted as both the compiler distributed by the Project and any compiler that can compile the Rust language. If you are not referring to the compiler distributed by the Project, you must change the wording to make it clear that this is not the compiler distributed by the Project, such as ``ABC compiler for Rust.'' Here, several problems are apparent. First of all, there is an emphasis on the redistribution of source or binary code unmodified by anyone but the Rust developers: that in itself is not a problem, but it is concerning. 4.1.2, 4.1.3, 4.1.4, however, imply that it is forbidden to use the word ``Rust'' to directly describe modified executable code. For example, if you modify the Rust compiler in an unapproved manner, it can no longer call itself the ``Rust compiler''. Unfortunately, rewording each reference in the Rust compiler is not feasible, making the compiler effectively proprietary, as one cannot freely convey modified versions of the compiler. 4.2.1, 4.3.1 further expand on this: 4.2.1 Distribution of modified software You may use the Word Marks and the Logos for the distribution of a modified version of the Rust programming language, compiler, or the Cargo package manager, provided that the modifications are limited to: - code adjustments for the purpose of porting to a different platform, architecture, or system, or integrating the software with the packaging system of that platform; or - fixing local paths; or - adding patches that have been made available upstream and accepted, or submitted upstream and not yet rejected (but you must remove either the patch or the trademark once the patch has been rejected) 4.3.1 Use of the marks in toolchains or other software for use with Rust Using the Marks in the name of a tool for use in the Rust toolchain, a software program written in the Rust language, or a software program compatible with Rust software, will most likely require a license. The ``RS'' abbreviation can be used instead. Restricting redistribution of modified versions of the Rust compiler to simple ports, and making difficult the development of other Rust compilers. If you are writing Rust code for Emacs, please stop. As things are, that code is not going to be useful. \f The policy is also politically discriminatory: the policy's FAQ section contains Can I use a modified version of the logo on social media? In general, we prohibit the modification of the Rust logo for any purpose, except to scale it. This includes distortion, transparency, color-changes affiliated with for-profit brands or political ideologies. On the other hand, if you would like to change the colors of the Rust logo to communicate allegiance with a community movement, we simply ask that you run the proposed logo change by us by emailing the file to contact@rustfoundation.org with a description of the changes you’re proposing. In the future, we intend to publish new versions of the Rust logo to accord with community movements (ex: LGBTQIA+ Pride Month, Black Lives Matter, etc.) and 5.3.1 contains: 5.3.1 Events & Conferences Events and conferences are a valuable opportunity to grow your network and learning. Please contact us at `Where to go for further information' below if you would like to hold an event using the Marks in the event name. We will consider requests to use the Marks on a case by case basis, but at a minimum, would expect events and conferences using the Marks to be non-profit-making, focused on discussion of, and education on, Rust software, prohibit the carrying of firearms, comply with local health regulations, and have a robust Code of Conduct. While not directly related to using Rust to write software, it sure makes me uncomfortable to think about producing long-lasting free software with a compiler under the firm grasp of developers who seem to care more about firearms restrictions and issues better left for soc.motss... ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-04-11 12:39 ` Po Lu via Emacs development discussions. @ 2023-04-11 18:23 ` Dr. Arne Babenhauserheide 2023-04-15 3:36 ` Richard Stallman 2023-04-12 0:36 ` Dmitry Gutov ` (2 subsequent siblings) 3 siblings, 1 reply; 41+ messages in thread From: Dr. Arne Babenhauserheide @ 2023-04-11 18:23 UTC (permalink / raw) To: Po Lu; +Cc: Troy Hinckley, Sean Allred, emacs-devel [-- Attachment #1: Type: text/plain, Size: 1222 bytes --] Po Lu via "Emacs development discussions." <emacs-devel@gnu.org> writes: > Po Lu <luangruo@yahoo.com> writes: > >> There are no real ideological reasons. > > This has changed. From my POV, Rust is now completely unsuitable for > writing code for Emacs. > > The Rust Foundation has published a draft trademark policy. They will > apply this policy to all use of the Rust trademark, including towards > documentation surrounding other implementations of the Rust language. … > 5.3.1 Events & Conferences > > Events and conferences are a valuable opportunity to grow your network > and learning. Please contact us at `Where to go for further > information' below if you would like to hold an event using the Marks > in the event name. Most of the other parts sound like “Firefox if Javascript were named Firefox Script”, which is mainly annoying, but this one is awful. Imagine being an organizer of an existing long-standing Rust event that helped to get Rust where it is today and now being expected to crawl to them asking for permission to keep the name of the event. Best wishes, Arne -- Unpolitisch sein heißt politisch sein, ohne es zu merken. draketo.de [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 1125 bytes --] ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-04-11 18:23 ` Dr. Arne Babenhauserheide @ 2023-04-15 3:36 ` Richard Stallman 2023-04-15 3:40 ` Po Lu 0 siblings, 1 reply; 41+ messages in thread From: Richard Stallman @ 2023-04-15 3:36 UTC (permalink / raw) To: Dr. Arne Babenhauserheide; +Cc: luangruo, emacs-devel [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > Imagine being an organizer of an existing long-standing Rust event that > helped to get Rust where it is today and now being expected to crawl to > them asking for permission to keep the name of the event. One could imagine renaming the event to Bust, Dust, Gust, Lust or maybe Distrust. But we need to keep focus on the aspects of this policy which are worse than merely irritating. The adoption of this policy would make the unmodified Rust compiler source code nonfree unless we devise a way to remove all uses of the trademark, as trademark law understands the concept. How MUCH alterattion that would require, and how much work that would be, I am not sure. Would a global replace of `rust' with `lust' in the source files of the Rust compiler suffice? It would include a similar renaming of source file names. It would not be the minimal possible change as measured by diff, but it might be the change that is the least work. One would have the installation script create a symlink or alias from /usr/bin/rust to /usr/bin/lust. Trademark law, from what lawyers have told me, covers communications to human beings, not commands for programs. Pu Lu, can you find places where discussion of this is happening, and tell us? Would someone with a fast build machine like to volunteer to play with such renamings? I hope they will change the policy before adopting it for real. It would be better if the unmodified files were free software and we could distribute them unmodified. We have no reason to make any change in Rust sources except to excape gratuitous trademark problems. -- Dr Richard Stallman (https://stallman.org) Chief GNUisance of the GNU Project (https://gnu.org) Founder, Free Software Foundation (https://fsf.org) Internet Hall-of-Famer (https://internethalloffame.org) ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-04-15 3:36 ` Richard Stallman @ 2023-04-15 3:40 ` Po Lu 2023-04-15 7:03 ` Eli Zaretskii 0 siblings, 1 reply; 41+ messages in thread From: Po Lu @ 2023-04-15 3:40 UTC (permalink / raw) To: Richard Stallman; +Cc: Dr. Arne Babenhauserheide, emacs-devel Richard Stallman <rms@gnu.org> writes: > But we need to keep focus on the aspects of this policy which are > worse than merely irritating. The adoption of this policy would make > the unmodified Rust compiler source code nonfree unless we devise a > way to remove all uses of the trademark, as trademark law understands > the concept. > > How MUCH alterattion that would require, and how much work that would > be, I am not sure. Would a global replace of `rust' with `lust' in > the source files of the Rust compiler suffice? It would include a > similar renaming of source file names. It would not be the minimal > possible change as measured by diff, but it might be the change that > is the least work. I don't know. > One would have the installation script create a symlink or alias from > /usr/bin/rust to /usr/bin/lust. Trademark law, from what lawyers have > told me, covers communications to human beings, not commands for > programs. > > Pu Lu, can you find places where discussion of this is happening, and > tell us? `Po Lu' please, thanks. Unfortunately, I can't really follow these issues. I have no idea where this discussion is happening. I wonder how GCC will deal with these issues, seeing as a Rust compiler is already part of GCC. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-04-15 3:40 ` Po Lu @ 2023-04-15 7:03 ` Eli Zaretskii 0 siblings, 0 replies; 41+ messages in thread From: Eli Zaretskii @ 2023-04-15 7:03 UTC (permalink / raw) To: Po Lu, Richard Stallman; +Cc: arne_bab, emacs-devel > From: Po Lu <luangruo@yahoo.com> > Cc: "Dr. Arne Babenhauserheide" <arne_bab@web.de>, emacs-devel@gnu.org > Date: Sat, 15 Apr 2023 11:40:40 +0800 > > Unfortunately, I can't really follow these issues. I have no idea where > this discussion is happening. > > I wonder how GCC will deal with these issues, seeing as a Rust compiler > is already part of GCC. Not just GCC, GDB as well; see gdb/rust-*.[ch] files in the GDB source tree. Richard, I indeed think this is something GCC and GDB folks need to look into, not us here. It affects them much more than it affects Emacs. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-04-11 12:39 ` Po Lu via Emacs development discussions. 2023-04-11 18:23 ` Dr. Arne Babenhauserheide @ 2023-04-12 0:36 ` Dmitry Gutov 2023-04-12 4:59 ` tomas 2023-04-12 11:26 ` Richard Stallman 2023-04-13 1:02 ` Richard Stallman 3 siblings, 1 reply; 41+ messages in thread From: Dmitry Gutov @ 2023-04-12 0:36 UTC (permalink / raw) To: Po Lu, Troy Hinckley; +Cc: Sean Allred, emacs-devel On 11/04/2023 15:39, Po Lu via Emacs development discussions. wrote: > The Rust Foundation has published a draft trademark policy. They will > apply this policy to all use of the Rust trademark, including towards > documentation surrounding other implementations of the Rust language. Thankfully it's a "draft". There is currently a minor storm on Twitter regarding this proposed policy, so we can help for some positive changes. https://twitter.com/steveklabnik/status/1645544552206327811, etc. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-04-12 0:36 ` Dmitry Gutov @ 2023-04-12 4:59 ` tomas 0 siblings, 0 replies; 41+ messages in thread From: tomas @ 2023-04-12 4:59 UTC (permalink / raw) To: emacs-devel [-- Attachment #1: Type: text/plain, Size: 904 bytes --] On Wed, Apr 12, 2023 at 03:36:29AM +0300, Dmitry Gutov wrote: > On 11/04/2023 15:39, Po Lu via Emacs development discussions. wrote: > > The Rust Foundation has published a draft trademark policy. They will > > apply this policy to all use of the Rust trademark, including towards > > documentation surrounding other implementations of the Rust language. > > Thankfully it's a "draft". There is currently a minor storm on Twitter > regarding this proposed policy, so we can help for some positive changes. > > https://twitter.com/steveklabnik/status/1645544552206327811, etc. Hopefully. I don't twitter, but thanks for the heads-up. Still somewhat concerning that those things happen at all: one gets the impression that people are throwing things at walls and seeing what sticks. There are several reasons for me to stay away from Rust. This is just one more. Cheers -- t [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 195 bytes --] ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-04-11 12:39 ` Po Lu via Emacs development discussions. 2023-04-11 18:23 ` Dr. Arne Babenhauserheide 2023-04-12 0:36 ` Dmitry Gutov @ 2023-04-12 11:26 ` Richard Stallman 2023-04-13 1:02 ` Richard Stallman 3 siblings, 0 replies; 41+ messages in thread From: Richard Stallman @ 2023-04-12 11:26 UTC (permalink / raw) To: Po Lu; +Cc: comms, allred.sean, emacs-devel [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] What you've sent is very alarming. I need to study the whole thing. Pu Lu, would you please send me the URL of the document you are looking at? Also, what is its title, and whose statement is it? Also, if you can tell, when was it published? Others: I asked Po Lu to send that to me so that you won't all send me many identical copies. -- Dr Richard Stallman (https://stallman.org) Chief GNUisance of the GNU Project (https://gnu.org) Founder, Free Software Foundation (https://fsf.org) Internet Hall-of-Famer (https://internethalloffame.org) ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-04-11 12:39 ` Po Lu via Emacs development discussions. ` (2 preceding siblings ...) 2023-04-12 11:26 ` Richard Stallman @ 2023-04-13 1:02 ` Richard Stallman 2023-04-13 5:09 ` Eli Zaretskii 2023-04-15 23:27 ` Dmitry Gutov 3 siblings, 2 replies; 41+ messages in thread From: Richard Stallman @ 2023-04-13 1:02 UTC (permalink / raw) To: Po Lu; +Cc: comms, allred.sean, emacs-devel [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] What you've sent is very alarming. I need to study the whole thin. Pu Lu, would you please send me the URL of the document you are looking at? Also, what is its title, and whose statement is it? Also, if you can tell, when was it published? -- Dr Richard Stallman (https://stallman.org) Chief GNUisance of the GNU Project (https://gnu.org) Founder, Free Software Foundation (https://fsf.org) Internet Hall-of-Famer (https://internethalloffame.org) ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-04-13 1:02 ` Richard Stallman @ 2023-04-13 5:09 ` Eli Zaretskii 2023-04-13 8:23 ` Po Lu 2023-04-15 23:27 ` Dmitry Gutov 1 sibling, 1 reply; 41+ messages in thread From: Eli Zaretskii @ 2023-04-13 5:09 UTC (permalink / raw) To: rms; +Cc: luangruo, comms, allred.sean, emacs-devel > From: Richard Stallman <rms@gnu.org> > Cc: comms@dabrev.com, allred.sean@gmail.com, emacs-devel@gnu.org > Date: Wed, 12 Apr 2023 21:02:18 -0400 > > What you've sent is very alarming. I need to study the whole thin. > Pu Lu, would you please send me the URL of the document you are looking at? > Also, what is its title, and whose statement is it? Since Po Lu didn't respond, I assume he has email delivery problems again, and will respond in his stead. The URL where you can find this document is: https://docs.google.com/document/d/1ErZlwz9bbSI43dNo-rgQdkovm2h5ycuW220mWSOAuok/edit https://docs.google.com/document/d/1ErZlwz9bbSI43dNo-rgQdkovm2h5ycuW220mWSOAuok/edit#heading=h.3znysh7 The title is "Rust Trademark Policy". Don't know a formal answer to the "whose statement is it" part, but the announcement requests that feedback and questions be sent to trademark@rustfoundation.org. > Also, if you can tell, when was it published? Two days ago. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-04-13 5:09 ` Eli Zaretskii @ 2023-04-13 8:23 ` Po Lu 0 siblings, 0 replies; 41+ messages in thread From: Po Lu @ 2023-04-13 8:23 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rms, comms, allred.sean, emacs-devel Eli Zaretskii <eliz@gnu.org> writes: > Since Po Lu didn't respond, I assume he has email delivery problems > again, and will respond in his stead. I responded to RMS off-list, since the details are not exactly relevant to Emacs. Thanks. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-04-13 1:02 ` Richard Stallman 2023-04-13 5:09 ` Eli Zaretskii @ 2023-04-15 23:27 ` Dmitry Gutov 2023-04-16 0:11 ` Po Lu 1 sibling, 1 reply; 41+ messages in thread From: Dmitry Gutov @ 2023-04-15 23:27 UTC (permalink / raw) To: rms, Po Lu; +Cc: comms, allred.sean, emacs-devel On 13/04/2023 04:02, Richard Stallman wrote: > [[[ To any NSA and FBI agents reading my email: please consider ]]] > [[[ whether defending the US Constitution against all enemies, ]]] > [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > > What you've sent is very alarming. I need to study the whole thin. > Pu Lu, would you please send me the URL of the document you are looking at? > Also, what is its title, and whose statement is it? > > Also, if you can tell, when was it published? Again: for now this is only a draft. There is no need to draw long-term conclusions about Rust from it yet, and publish those as if the new terms are a concluded matter. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-04-15 23:27 ` Dmitry Gutov @ 2023-04-16 0:11 ` Po Lu 2023-04-17 2:55 ` Richard Stallman 0 siblings, 1 reply; 41+ messages in thread From: Po Lu @ 2023-04-16 0:11 UTC (permalink / raw) To: Dmitry Gutov; +Cc: rms, comms, allred.sean, emacs-devel Dmitry Gutov <dmitry@gutov.dev> writes: > Again: for now this is only a draft. > > There is no need to draw long-term conclusions about Rust from it yet, > and publish those as if the new terms are a concluded matter. It's just as alarming, because the draft is currently what they intend to make policy. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-04-16 0:11 ` Po Lu @ 2023-04-17 2:55 ` Richard Stallman 0 siblings, 0 replies; 41+ messages in thread From: Richard Stallman @ 2023-04-17 2:55 UTC (permalink / raw) To: Po Lu; +Cc: dmitry, comms, allred.sean, emacs-devel [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > > There is no need to draw long-term conclusions about Rust from it yet, > > and publish those as if the new terms are a concluded matter. > It's just as alarming, because the draft is currently what they intend > to make policy. I agree. We face the challenge of dissuading them. -- Dr Richard Stallman (https://stallman.org) Chief GNUisance of the GNU Project (https://gnu.org) Founder, Free Software Foundation (https://fsf.org) Internet Hall-of-Famer (https://internethalloffame.org) ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-01-23 3:37 ` Troy Hinckley 2023-01-23 12:25 ` Po Lu @ 2023-01-23 13:21 ` Dr. Arne Babenhauserheide 2023-01-23 16:51 ` John Yates 2023-01-24 0:45 ` Po Lu 1 sibling, 2 replies; 41+ messages in thread From: Dr. Arne Babenhauserheide @ 2023-01-23 13:21 UTC (permalink / raw) To: Troy Hinckley; +Cc: Sean Allred, emacs-devel [-- Attachment #1: Type: text/plain, Size: 769 bytes --] Troy Hinckley <comms@dabrev.com> writes: > Po Lu already provided one; Emacs needs to support old platforms like MS-DOS. So that rules out LLVM. GCCrs might help with that: https://rust-gcc.github.io/ Once that’s released and stable in GCC, Rust is finally safe to use for those who want at least two independent implementations (like me). > Are there others? There was a point about complexity: adding another language besides C and elisp increases complexity for contributors and maintainers a lot. Also the gains from memory safety are much lower than for much other software, because in Emacs memory-safety is already provided by elisp. Best wishes, Arne -- Unpolitisch sein heißt politisch sein, ohne es zu merken. draketo.de [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 1125 bytes --] ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-01-23 13:21 ` Dr. Arne Babenhauserheide @ 2023-01-23 16:51 ` John Yates 2023-01-23 17:06 ` Eli Zaretskii 2023-01-24 0:45 ` Po Lu 1 sibling, 1 reply; 41+ messages in thread From: John Yates @ 2023-01-23 16:51 UTC (permalink / raw) To: Dr. Arne Babenhauserheide; +Cc: Troy Hinckley, Sean Allred, emacs-devel On Mon, Jan 23, 2023 at 9:26 AM Dr. Arne Babenhauserheide <arne_bab@web.de> wrote: > > There was a point about complexity: adding another language besides C > and elisp increases complexity for contributors and maintainers a lot. Once upon a time, functions deemed performance critical were implemented within the C core. Over time that impetus has diminished greatly. I have observed large amounts of functionality migrate from C to lisp. Native compilation can only have reinforced that evolution. The net effect has been to reduce the need for most emacs developers ever to need to work in any language other than lisp. /john ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-01-23 16:51 ` John Yates @ 2023-01-23 17:06 ` Eli Zaretskii 2023-01-23 18:22 ` John Yates 0 siblings, 1 reply; 41+ messages in thread From: Eli Zaretskii @ 2023-01-23 17:06 UTC (permalink / raw) To: John Yates; +Cc: arne_bab, comms, allred.sean, emacs-devel > From: John Yates <john@yates-sheets.org> > Date: Mon, 23 Jan 2023 11:51:32 -0500 > Cc: Troy Hinckley <comms@dabrev.com>, Sean Allred <allred.sean@gmail.com>, > emacs-devel@gnu.org > > On Mon, Jan 23, 2023 at 9:26 AM Dr. Arne Babenhauserheide > <arne_bab@web.de> wrote: > > > > There was a point about complexity: adding another language besides C > > and elisp increases complexity for contributors and maintainers a lot. > > Once upon a time, functions deemed performance critical were > implemented within the C core. Over time that impetus has > diminished greatly. I have observed large amounts of functionality > migrate from C to lisp. Native compilation can only have reinforced > that evolution. > > The net effect has been to reduce the need for most emacs developers > ever to need to work in any language other than lisp. Quite a few new features are still being implemented in C. Consider just the recent innovations: native-compilation, tree-sitter, support for XInput2 and touch devices, to name just a few. Moreover, familiarity with the internals implemented in C is IME quite necessary even for Emacs developers who almost never touch that layer. So the above is true only up to a point. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-01-23 17:06 ` Eli Zaretskii @ 2023-01-23 18:22 ` John Yates 2023-01-23 19:04 ` Eli Zaretskii ` (2 more replies) 0 siblings, 3 replies; 41+ messages in thread From: John Yates @ 2023-01-23 18:22 UTC (permalink / raw) To: Eli Zaretskii; +Cc: arne_bab, comms, allred.sean, emacs-devel On Mon, Jan 23, 2023 at 12:06 PM Eli Zaretskii <eliz@gnu.org> wrote: > > Quite a few new features are still being implemented in C. Consider > just the recent innovations: native-compilation, tree-sitter, support > for XInput2 and touch devices, to name just a few. Of these four, only tree-sitter seems to be implemented in C solely for performance reasons. IIANM, there is nothing fundamental about what tree-sitter is doing that *could not* be done in lisp. The only issue is performance. By contrast, the three other features that you list (native- compilation, XInput2 and touch screen support) need to interact with the host environment. From what I have observed, developers typically partition such features into a C component and a lisp component. The impetus seems to be to find a natural partition: to do in C what must (which may still include some performance considerations) and then to expose a nice, clean interface to lisp. Part of what went unsaid in my previous post is that there have been multiple occasions where code migrated from C to lisp, often to make it easier to maintain and/or extend. I am sure that there must have been instances of migration in the other direction, but none come immediately to mind. > Moreover, familiarity with the internals implemented in C is IME quite > necessary even for Emacs developers who almost never touch that layer. For some definition of Emacs developer, I do agree. (Though, as a C++ developer who, decades ago, left ancient C behind, and having recently spent time noodling on the periphery of the display engine, I can tell you that wading into that code is "bracing". :-) /john -- John Yates 505 Tremont St, #803 Boston, MA 02116 ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-01-23 18:22 ` John Yates @ 2023-01-23 19:04 ` Eli Zaretskii 2023-01-23 19:44 ` Bob Rogers 2023-01-23 19:22 ` Dr. Arne Babenhauserheide 2023-01-23 23:52 ` Po Lu 2 siblings, 1 reply; 41+ messages in thread From: Eli Zaretskii @ 2023-01-23 19:04 UTC (permalink / raw) To: John Yates; +Cc: arne_bab, comms, allred.sean, emacs-devel > From: John Yates <john@yates-sheets.org> > Date: Mon, 23 Jan 2023 13:22:44 -0500 > Cc: arne_bab@web.de, comms@dabrev.com, allred.sean@gmail.com, > emacs-devel@gnu.org > > On Mon, Jan 23, 2023 at 12:06 PM Eli Zaretskii <eliz@gnu.org> wrote: > > > > Quite a few new features are still being implemented in C. Consider > > just the recent innovations: native-compilation, tree-sitter, support > > for XInput2 and touch devices, to name just a few. > > Of these four, only tree-sitter seems to be implemented in C solely > for performance reasons. IIANM, there is nothing fundamental about > what tree-sitter is doing that *could not* be done in lisp. The > only issue is performance. > > By contrast, the three other features that you list (native- > compilation, XInput2 and touch screen support) need to interact > with the host environment. From what I have observed, developers > typically partition such features into a C component and a lisp > component. The impetus seems to be to find a natural partition: > to do in C what must (which may still include some performance > considerations) and then to expose a nice, clean interface to lisp. Right. Which is exactly my point: some parts of Emacs are implemented in C for reasons that have nothing (or almost nothing) to do with performance. E.g., even in the first example, you cannot access buffer text directly except on the C level. > > Moreover, familiarity with the internals implemented in C is IME quite > > necessary even for Emacs developers who almost never touch that layer. > > For some definition of Emacs developer, I do agree. I think for any serious Emacs developer. Limiting the familiarity to the Lisp level will leave many important aspects look like black magic, because what we expose to Lisp is higher-level abstractions that sometimes create a completely inaccurate mental picture of what really happens. A good example is the machinery that triggers redisplay and how it integrates into the Emacs "main loop". ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-01-23 19:04 ` Eli Zaretskii @ 2023-01-23 19:44 ` Bob Rogers 2023-01-23 19:56 ` Eli Zaretskii 0 siblings, 1 reply; 41+ messages in thread From: Bob Rogers @ 2023-01-23 19:44 UTC (permalink / raw) To: Eli Zaretskii, emacs-devel From: Eli Zaretskii <eliz@gnu.org> Date: Mon, 23 Jan 2023 21:04:47 +0200 > From: John Yates <john@yates-sheets.org> > Date: Mon, 23 Jan 2023 13:22:44 -0500 > . . . > On Mon, Jan 23, 2023 at 12:06 PM Eli Zaretskii <eliz@gnu.org> wrote: > . . . > > Moreover, familiarity with the internals implemented in C is IME quite > > necessary even for Emacs developers who almost never touch that layer. > > For some definition of Emacs developer, I do agree. I think for any serious Emacs developer. Limiting the familiarity to the Lisp level will leave many important aspects look like black magic, because what we expose to Lisp is higher-level abstractions that sometimes create a completely inaccurate mental picture of what really happens . . . I can speak to that. As someone not competent to hack on emacs at the C level, I nevertheless find I need to dip into the C code from time to time in order to understand what the elisp is doing, with increasing frequency over the last 30-odd years. I think that shows a net elisp => C migration during that time. A good example is the machinery that triggers redisplay and how it integrates into the Emacs "main loop". I try really hard to stay out of redisplay. ;-} -- Bob Rogers http://www.rgrjr.com/ ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-01-23 19:44 ` Bob Rogers @ 2023-01-23 19:56 ` Eli Zaretskii 2023-01-23 20:08 ` Bob Rogers 0 siblings, 1 reply; 41+ messages in thread From: Eli Zaretskii @ 2023-01-23 19:56 UTC (permalink / raw) To: Bob Rogers; +Cc: emacs-devel > Date: Mon, 23 Jan 2023 11:44:20 -0800 > From: Bob Rogers <rogers@rgrjr.com> > > A good example is the machinery that triggers redisplay and how it > integrates into the Emacs "main loop". > > I try really hard to stay out of redisplay. ;-} I didn't mean redisplay itself, I meant the way it is triggered in Emacs. IME, many people don't understand that, and, for example, think that scroll commands actually scroll the text in the window. Which, of course, is not what happens. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-01-23 19:56 ` Eli Zaretskii @ 2023-01-23 20:08 ` Bob Rogers 0 siblings, 0 replies; 41+ messages in thread From: Bob Rogers @ 2023-01-23 20:08 UTC (permalink / raw) To: Eli Zaretskii; +Cc: emacs-devel From: Eli Zaretskii <eliz@gnu.org> Date: Mon, 23 Jan 2023 21:56:16 +0200 > Date: Mon, 23 Jan 2023 11:44:20 -0800 > From: Bob Rogers <rogers@rgrjr.com> > > A good example is the machinery that triggers redisplay and how it > integrates into the Emacs "main loop". > > I try really hard to stay out of redisplay. ;-} I didn't mean redisplay itself, I meant the way it is triggered in Emacs. Ah, I guess I never needed to make the distinction. IME, many people don't understand that, and, for example, think that scroll commands actually scroll the text in the window. Which, of course, is not what happens. That I've seen, from watching emacs repaint after scrolling over a slow connection. -- Bob ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-01-23 18:22 ` John Yates 2023-01-23 19:04 ` Eli Zaretskii @ 2023-01-23 19:22 ` Dr. Arne Babenhauserheide 2023-01-23 23:52 ` Po Lu 2 siblings, 0 replies; 41+ messages in thread From: Dr. Arne Babenhauserheide @ 2023-01-23 19:22 UTC (permalink / raw) To: John Yates; +Cc: Eli Zaretskii, comms, allred.sean, emacs-devel [-- Attachment #1: Type: text/plain, Size: 734 bytes --] John Yates <john@yates-sheets.org> writes: > Part of what went unsaid in my previous post is that there have been > multiple occasions where code migrated from C to lisp, often to make > it easier to maintain and/or extend. Incidentally the same happens in Guile: the better the runtime gets, the more functionality moves from C to Scheme. It seems that when you create a tool with a Lisp runtime, moving as many things into the runtime as viable might be a natural tendency. And just like Emacs, Guile derives serious added value from that, because the migrated code interacts much better with existing Lisp code. Best wishes, Arne -- Unpolitisch sein heißt politisch sein, ohne es zu merken. draketo.de [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 1125 bytes --] ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-01-23 18:22 ` John Yates 2023-01-23 19:04 ` Eli Zaretskii 2023-01-23 19:22 ` Dr. Arne Babenhauserheide @ 2023-01-23 23:52 ` Po Lu 2 siblings, 0 replies; 41+ messages in thread From: Po Lu @ 2023-01-23 23:52 UTC (permalink / raw) To: emacs-devel, John Yates, Eli Zaretskii; +Cc: arne_bab, comms, allred.sean I find Emacs Lisp to be a limiting language compared to C. This is just my opinion, and this is why I greatly prefer writing C over Lisp. However, writing everything in C precludes customizing Emacs, so I tried to find a balance there. A good example would be the drag and drop code. On January 24, 2023 2:22:44 AM GMT+08:00, John Yates <john@yates-sheets.org> wrote: >On Mon, Jan 23, 2023 at 12:06 PM Eli Zaretskii <eliz@gnu.org> wrote: >> >> Quite a few new features are still being implemented in C. Consider >> just the recent innovations: native-compilation, tree-sitter, support >> for XInput2 and touch devices, to name just a few. > >Of these four, only tree-sitter seems to be implemented in C solely >for performance reasons. IIANM, there is nothing fundamental about >what tree-sitter is doing that *could not* be done in lisp. The >only issue is performance. > >By contrast, the three other features that you list (native- >compilation, XInput2 and touch screen support) need to interact >with the host environment. From what I have observed, developers >typically partition such features into a C component and a lisp >component. The impetus seems to be to find a natural partition: >to do in C what must (which may still include some performance >considerations) and then to expose a nice, clean interface to lisp. > >Part of what went unsaid in my previous post is that there have been >multiple occasions where code migrated from C to lisp, often to make >it easier to maintain and/or extend. I am sure that there must have >been instances of migration in the other direction, but none come >immediately to mind. > >> Moreover, familiarity with the internals implemented in C is IME quite >> necessary even for Emacs developers who almost never touch that layer. > >For some definition of Emacs developer, I do agree. (Though, as a >C++ developer who, decades ago, left ancient C behind, and having >recently spent time noodling on the periphery of the display engine, >I can tell you that wading into that code is "bracing". :-) > >/john > > > ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-01-23 13:21 ` Dr. Arne Babenhauserheide 2023-01-23 16:51 ` John Yates @ 2023-01-24 0:45 ` Po Lu 1 sibling, 0 replies; 41+ messages in thread From: Po Lu @ 2023-01-24 0:45 UTC (permalink / raw) To: Dr. Arne Babenhauserheide; +Cc: Troy Hinckley, Sean Allred, emacs-devel "Dr. Arne Babenhauserheide" <arne_bab@web.de> writes: > GCCrs might help with that: https://rust-gcc.github.io/ > > Once that’s released and stable in GCC, Rust is finally safe to use for > those who want at least two independent implementations (like me). The language standard library must also be ported to both the Unix and DJGPP platforms. On MS-DOS, it must also be made unexec ready, because only the unexec build is supported there. > Also the gains from memory safety are much lower than for much other > software, because in Emacs memory-safety is already provided by elisp. Has anyone even demonstrated that memory safety is a problem for Emacs? The only program where it matters, that runs on most computers, is a web browser. And even there it only papers over the more fundamental problem, which is that web browsers provide an easy means to run proprietary JavaScript code without the user even knowing it exists. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Consideration for Rust contributions in Emacs 2023-01-23 2:00 ` Sean Allred 2023-01-23 3:37 ` Troy Hinckley @ 2023-01-23 7:32 ` Robert Pluim 1 sibling, 0 replies; 41+ messages in thread From: Robert Pluim @ 2023-01-23 7:32 UTC (permalink / raw) To: Sean Allred; +Cc: Troy Hinckley, emacs-devel >>>>> On Sun, 22 Jan 2023 20:00:49 -0600, Sean Allred <allred.sean@gmail.com> said: Sean> The last significant endeavor in this direction that I'm aware of was Sean> Remacs -- but it appears development has petered out for one reason or Sean> another. I don't think it's a lost cause in the grand scheme of things, Sean> but this clearly is not a ship that can/would/should change course very Sean> easily. Remacs was doomed from the start since they deliberately decided not to ask for copyright assignment, which meant merging it into Emacs would have been a massive pain, so nobody on the Emacs side of things got involved. Robert -- ^ permalink raw reply [flat|nested] 41+ messages in thread
end of thread, other threads:[~2023-04-17 2:55 UTC | newest] Thread overview: 41+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <f2ee2f1d-332f-4707-bd9e-23444c34749f@Spark> 2023-01-21 22:48 ` Consideration for Rust contributions in Emacs Troy Hinckley 2023-01-22 7:44 ` Po Lu via Emacs development discussions. 2023-01-22 11:05 ` Daniel Martín 2023-01-22 14:04 ` Po Lu 2023-01-22 23:16 ` Troy Hinckley 2023-01-23 5:55 ` Po Lu 2023-01-24 3:49 ` Richard Stallman 2023-01-24 3:52 ` Richard Stallman 2023-01-24 6:52 ` Dr. Arne Babenhauserheide 2023-01-23 2:00 ` Sean Allred 2023-01-23 3:37 ` Troy Hinckley 2023-01-23 12:25 ` Po Lu 2023-01-24 2:24 ` Lynn Winebarger 2023-01-24 2:47 ` Etienne Prud'homme 2023-01-24 2:49 ` Po Lu 2023-04-11 12:39 ` Po Lu via Emacs development discussions. 2023-04-11 18:23 ` Dr. Arne Babenhauserheide 2023-04-15 3:36 ` Richard Stallman 2023-04-15 3:40 ` Po Lu 2023-04-15 7:03 ` Eli Zaretskii 2023-04-12 0:36 ` Dmitry Gutov 2023-04-12 4:59 ` tomas 2023-04-12 11:26 ` Richard Stallman 2023-04-13 1:02 ` Richard Stallman 2023-04-13 5:09 ` Eli Zaretskii 2023-04-13 8:23 ` Po Lu 2023-04-15 23:27 ` Dmitry Gutov 2023-04-16 0:11 ` Po Lu 2023-04-17 2:55 ` Richard Stallman 2023-01-23 13:21 ` Dr. Arne Babenhauserheide 2023-01-23 16:51 ` John Yates 2023-01-23 17:06 ` Eli Zaretskii 2023-01-23 18:22 ` John Yates 2023-01-23 19:04 ` Eli Zaretskii 2023-01-23 19:44 ` Bob Rogers 2023-01-23 19:56 ` Eli Zaretskii 2023-01-23 20:08 ` Bob Rogers 2023-01-23 19:22 ` Dr. Arne Babenhauserheide 2023-01-23 23:52 ` Po Lu 2023-01-24 0:45 ` Po Lu 2023-01-23 7:32 ` Robert Pluim
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/emacs.git https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.