View Single Post
Old 11 January 2019, 12:30  
Thomas Richter
Registered User
Join Date: Jan 2019
Location: Germany
Posts: 255
First of all, let me say that I am sorry that I missed a bug in the shell, despite testing. One error condition is not properly propagated up-level. Strangely, this was not detected during testing, which still astonishes me given that the shell was under test for quite a while.

However, there are otherwise many misconceptions here, and Kolla is (as usual) just making a rumble for the purpose of making a rumble.

First, why is "Pipe" gone, and why is the syntax frozen:

This is quite simple: The shell syntax is complicated enough as it is, such that it is already almost impossible to parse it correctly. Pipe (and Execute as well) did second-level parsing of the syntax, introducing the chance of parsing failures or parsing the awkward syntax incorrectly. Depending on external components to get things right is not a good idea, even more so as the shell syntax may slightly change over time, and that components must then be updated accordingly - which will then cause another confusion, for example if people miss updates or install "popular third party contributions" instead of original components. Where is the Os 3.1 version of Pipe? Right, there is none. For a reason.

In particular, _mchar and _pchar even allowed to make the shell-syntax dynamic, i.e. change within a script. If you think about the consequences, then that means that the "passive parsing" execute has to do can no longer work robustly as execute would need to adapt its own parser according to shell variables of a script it does not yet execute, but rather pre-parses. This is a nightmare to get right, and to update. Execute is already a nightmare. Just to let you know: Execute does, despite its name, not execute anything. It just creates a temporary file in T: from a parsing a script, and then let the shell execute it. Tripos at its greatest.

Second, please note that "Pipe" was undocumented for a reason, and not part of 3.1 for a reason. This was an experimental feature that was never suited for production use, and if you depend on undocumented features, then you depend on a volantile feature. Things do change, yes.

Third, unlike what people assume, || is not a boolean operator and not a look-alike of the "bash" operators || and &&. Instead, it is the concatenation operator, from ARexx. The left-hand side is executed in a side-shell, and then concatenated to the output of the right-hand side. That is, || is a form of a pipe, and not a form of a boolean operator. As such, it does not propagade shell-internals forwards, same as | does not propagade shell internals forward.

Think about constructions like a || b | c. If "a" modifies a shell-private such as the current directory, should this affect c? And how is this chain understood in first place? Is this "execute a, then execute b pipe into c", or is it "execute a, and b, then pipe the output of both into c"?

The v46 shell ensures that this expression is evaluated "left to right", that is, the output of a and b joined together go into c, i.e. the last interpretation. Note that this is different from bash, and different from &&. Don't confuse bash syntax with shell syntax.

What "pipe" did - well, it pretty much depended on which pipe implementation you used. There is, unlike other claims, no "standard". I don't even remember which of the two interpretations pipe picked.

Then, NIL: redirection and & contain a bug as it goes with a 0 console-handler into an open for "CONSOLE:" which triggers a requester. This is, however, an old bug from the V45 shell (Os 3.9). Nobody ever noticed, apparently, so it is a bit late to complain about it. So, again, unlike claimed, there was "community testing", just that the community failed to detect an issue. Happens, of course.

Will this be fixed? Of course it will. There will be an update, tentatively scheduled for Q1 2019, but as always, it will be ready when it will be ready. According to my information, this will be a free update for 3.1.4 owners.

Last but not least: I am really tired of this "Hyperion has no licence" discussion. Go into the settlement agreement, check what it says, and note that "AmigaOs 4" is defined as "The operating system developed by Hyperion, irrespectively its version number". Hence, as far as the legal issues are concerned, "Os 3.1.4" is "Amiga Os 4". That Cloanto makes a big rumble about it is quite natural - their sales are going down, and it is part of the "dirty play" that is going on in the market - actually from both sides.

Then, a final point: I am even more tired about people like Kolla that complain whenever they can - people that contribute nothing, and are not willing to be helpful. Kolla complained about the Norsk localization - probably rightfully so, I cannot judge - but was not willing to provide fixes either.

Don't listen to such people. Everything will be cared for, sooner or later, but things will take a while. There are only few people that work on this, there is lots of work to do, sometimes things do go wrong, but that is all human. The day has only 24 hours, including a 9h/day full-time job for me, so please have some patience. We do care. But not about nay-sayers and complainers and trolls.

I know that this post will trigger just another troll attack of Kolla. Ignore him. I just don't want to let things stand as incorrect as they are.
Thomas Richter is offline  
Page generated in 0.04408 seconds with 10 queries