juxtapose
You would still need to configure the external environment, (e.g. installing MSYS2 on Windows,) and address platform-specific issues, (e.g. you need exec-path-from-shell on macOS, and/or adjust default coding systems on Windows). Generally, these problems are easy to solve.
Formal languages are called 'formal' because they have rigorously defined semantics. The 'undefined' parts, if anything, reveal that most of the expressible sentences have clearly defined semantics, rather than lack of them.
In addition, the semantics of 'undefined' behaviors is not 'non-deterministic' in the literal sense, since it is, well, undefined.
Twenty-four Hours of AI Coding
Personally though I've been running the igc branch... ;-)
CC Mode is extremely capable. Over the years it has developed to such a maturity that almost all needs can be satisfied, and performance has never been a problem for me. It contains very few, if any, bugs, that affect my use.
On the other hand, the tree-sitter major modes are not at al production-ready to be considered as default. For one thing, the whole highlighting can break for complex macros and ifdefs. (I'd be glad to be enlightened whether it's theoretically possible to fix at all -- can you correctly highlight ifdefs without doing semantic analysis with the help of a compiler?) For another, CC mode has a feature called c-guess that can quickly analyze an existing source buffer and generate a format definition which proves extremely valuable. Alas, c-ts-mode has zero support for it.
I had high hopes for tree-sitter. I turned on tree-sitter modes for all my coding when it was out, and now I have zero enabled. They still have a long way to go and I don't want to spend time debugging emacs code at work. :-)
Tree-sitter is not a panacea. Fast parsing alone is not what makes a good major mode.
Open any python file (emacs has a built-in python-mode), M-x eglot, and you are golden.
Microcomputer having ALU performing min and max operations (1996)
1. No, using Turing-complete scripts does not prevent information extraction and meaningful automation. You can ask the program to dump useful information, e.g. targets, compiler flags, etc. That's what rizsotto/Bear does for Makefile. CMAKE_EXPORT_COMPILE_COMMANDS is another example.
2. I don't really think you can do anything further with declarative build languages, unless it is a really limited one like JSON or XML. Meson (a relatively advanced one in the space) advocates for non-Turing-completeness, but you still cannot, for example, modify meson build files reliably using an external tool other than a text editor.
3. Complex build configuration usually requires non-trivial computation and/or dynamic dependency graph building. Turing-completeness gives you a possibility and you don't need to wait for build tool upgrades.
Comparing Meson to CMake, I find the niceties of Meson are usually not inherently non-TC. That is, you can theoretically reimplement a nicer CMake with all the niceties of Meson, while still being TC.
Lingua franca really matters. China, for example, didn't have a unified spoken language until about 100 years ago. However, Mandarin is today universally understood and spoken in the country. And the result? You only to know one language, and you can have access to one of the largest markets in the world. Alas, the same could not be said for Europe.
(In fact, Europe needs a unified language if people are serious about getting rid of English and the Anglo-American hegemony, because each smaller language really cannot fight English now.)
I also think I'm obliged to share this tip: you can write a function that copies a Markdown-style link [(info "Node")](https://gnu.org/...). ;-)
Besides the product, the community is pleasantly awesome as well. I've contributed a module to it and the maintainer has done a good job reviewing and testing. Heck, they even have a Discord server for contributors.
1. The issue writer will invest time and efforts, and publish their findings. Nobody's time is free: the maintainer's time is precious, and so is a user's.
2. Now, _after_ the issue is published, the maintainer additionally asks for a certain condition (give money or a star) to be satisfied.
What if the issue writer does not want to give that thing? The maintainer is now in an unfair position: they can still read the published issue, improve their software, but is not obliged to give any feedback or even credit the reporter.
It would be fairer if the condition was clearly conveyed to the reporter before they write any words. The system should simply not allow these issues written by the dissents to be created in the first place, and in that case the funny duck would also not appear before our eyes.
My first contribution to Emacs is a very similar experience as the author's. I took time to debug a long-standing issue in Emacs, I wrote a patch, I asked other users to test my patch, and I addressed comments on emacs-devel, but eventually it got completely rewritten by a maintainer without any credit for my efforts.
But to be fair, Emacs-NSPort (the official, Cocoa Emacs) is sorely lacking in maintenance power, and has a lot of problems, including tearing, glitches, crashes... It does not even have an official maintainer! [1]
OTOH, The MacPort has a maintainer, has more Mac-specific features, and is more stable. That being said, I still use the official port (due to various reasons).
[1] Try to look for src/nsterm.m in admin/MAINTAINERS.
It is so discouraging that I stopped working on the Emacs core [1] altogether: your contributions won't be acknowledged at all, even if someone volunteers to rewrite your code from scratch.
[1] I've been hacking some GUI-related features, but I'm not motivated enough to complete them. I also tried to write patches for my bug reports, but alas, my "CA-free" quota is already used up.
A successor to Atom is Pulsar [2].
[1] https://www.gnu.org/software/emacs/manual/html_node/elisp/Di...