From: Dzonatas Sol
After the initial read of your text, what I sense is that you prefer to force compliance by limitations in interfaces.
It's not a matter of "forcing compliance", it's a matter of only exposing in the interface those details that are relevant to the abstraction that the interface is a reflection of, and the environment that the interface is explosed to.
From: someone
Where the other method, which I prefer, is to detect proper data structures on input and output and error if incorrect.
That's a separate issue. If the environment on the "outside" of the interface has a mechanism for presenting multiple kinds of objects at the interface, then the interface exposed to that environment must of course be able to identify and verify each of those kinds of objects before accepting them. Where the environment doesn't have multiple kinds of objects, then there's no advantage to creating the illusion that they exist.
From: someone
Here, it is obvious the system that I have suggested is more of a run-time and compile-time format where what you have suggested is limited to a compile-time format.
Not at all. The interface I'm talking about is completely driven by the abstraction. The only relationship between the structures on the "inside" of the interface and the "outside" of the interface is that they both model the same abstraction.
From: someone
llxxxPrimitiveParams() is already implemented in LSL script,
But the new parameters aren't, and
LSL functions and parameters to ll*PrimitiveParams are the same thing. They're in the same name space, the same table, there's virtually no difference between adding one or the other, except
it becomes possible to do better error checking if it's a function. That's it.
That's the point you're missing... you seem to think that
ll*PrimitiveParams is somehow more abstract because it
looks like what you think of as an abstraction. The difference in appearance is purely cosmetic. The presence or absence of a functional interface doesn't change whether it's an abstraction or not.
From: someone
and the orthogonal features are also already implemented in the UI.
No they're not. None of the features you're proposing alre already implemented in the UI.
From: someone
The network protocol section that carries such data would only need to be expanded at worst. A entire new section would not need to be implemented.
That is true regardless of whether
llRenderText is implemented. There's no difference between
llRenderText and
PRIMITIVE_OVERLAY_TEXT except syntax.
This is the thing that I keep trying to get across to you. The things that you're worried about have nothing to do with the implementation.
From: someone
Oh, like nested lists? Nested lists can be done; it is not easy to script.
LSL does not implement nested lists. It has no mechanism for creating them or manipulating them. You can
encode a list as a string, and put it in a list. You can embed a reference to part of a second list or the same list in a list, by establishing a convention that (for example) a vector with certain values should be trested as a reference. You can embed a count or a terminator in a list. But none of these things are "nested lists".
From: someone
Not sure if you meant it in parallel or prependicular. Before I make an assumption, I'll just say it is silly to restrict such text on HUD features to only LSL script.
Where have I said that text on HUDS should be restricted to scripted text? What I'm saying is that
non-scripted text on HUDs is not relevant to this thread.
From: someone
This is one hint about the compile-time only view. No such problem exists with run-time events unless the run-time doesn't implement any such detection. There is no need to only rely on compile-time limitations.
Who's relying on them? I'm pointing this out as an advantage.
From: someone
That was a common bug found with programmers that relied on jiffies for time events.
Er, no. And you're missing the point.
From: someone
Here, I see the hint that you re-compiled it. That shows a reliance on compile-time features. One would ask if it could still even run without a re-compilation.
Sure.. if you had a PDP-11 or a PC running Xenix-86 available to run it on. I suppose I could fire up an emulator, but you're missing the point.
The point is that if an abstraction is going to be useful over multiple platforms (for example, LSL, and LSL with Mono) you have to expose an interface that doesn't depend on the details of the underlying implementation if it doesn't actually need to.
From: someone
We can't demand that LSL scripts to re-compile because it would essentially lose its stack that is so heavily relied upon. It would break content to recompile them.
I am not demanding that LSL scripts be recompiled. In fact I'm recommending an interface that allows
existing scripts to use SVG content without recompilation. There is NOTHING in ANYTHING I have written that even implies that ANY script ANYWHERE would need to be recompiled. Nothing.
From: someone
As features change, the run-time would need to be able to handle the differences.
Absolutely. I've said that myself, when I've talked about isolating the interface from the implementation... the best way to make sure that the run-time
can handle the differences is by not having any part of them exposed to the "outside" environment, unless they are (a) required by that environment, or (b) required by the abstraction.
From: someone
For example, in a dynamic compiler, the run-time is always available. There is no subsequent events like compile-time then run-time as popular languages involve. There is the run-time, and what was the compile-time has become a nested implementation within the run-time.
The interface to such an environment would be different from the interface to LSL, obviously. But that's ALSO something that I've already brought up.
From: someone
You haven't repeated to me, idea wise, what I wanted exposed in the API.
You're exposing in the API the implementation detail that the character set of LSL is currently Unicode.
From: someone
Ya, just display the notecard on a prim instead of on the HUD like it does now.
Notecards don't display in the HUD now, they display in the UI layer
over[/i[ the HUD.
From: someone
An LSL script can't change the contents of a notecard, however.
So? You were complaining that LSL had to be involved at all. Now I've presented a mechanism for removing that from the equation, and you're demanding that LSL be in the loop after all?
From: someone
... Maybe if people cared a little more about how much time and work goes into design to give people that option they would understand how it feels to be treated and rudely called some "poor programmer" or likewise. ...
I don't know what you're going on about here. You asked me what I was doing to help Mono. I answered that I don't care about Mono. I don't have infinite time, and any time I spend on things I don't care about takes time away from things I do care about. That doesn't mean I'm dissing Mono or you, it just means that Mono is not something that interests me.