World: r4wp
[Ann-Reply] Reply to Announce group
older newer | first last |
Andreas 27-Sep-2012 [731x4] | The `double j = 1.0. + 1.0` example is another bad one, sorry. It won't result in GCC runtime code being statically linked into the binary generated from a user program. But I will let that discussion rest, as it won't lead us anywhere. |
Again, how a GPL library is linked to _the interpreter_ is irrelevant for deciding wether it encumbers a _user program_. If your _user program_ dynamically links to that library, the user program is affected by the GPL. It is irrelevant wether that library was statically or dynamically linked to the _interpreter_. | |
The argument that we (paraphrasing) "have the source to the mezzanines" already is of course a very practical one. However, it only works as long as those mezzanines don't experience GPL-only changes. | |
(Sorry for picking up the GCC remark at all. I really want to let that rest, and I fully acknowledge your (Ladislav's) former description (the one I originally contested with "bad comparison").) | |
BrianH 27-Sep-2012 [735x2] | In the official statements that refer to the versions of R3 that have the current system model (approx. the last dozen versions), the functions included with R3 are referred to as the "Runtime Library". The other online docs haven't been updated to reflect the current system model, and most of them haven't even been updated for R3 yet, still referring to their R2 behavior. There are indications either way, enough to drive a trial through. We need an unambiguous published statement to be sure we won't be sued for using R3, or that at least such suits will fail. |
Andreas, there is apparently a difference between code/data that is considered to be part of the interpreter and code/data that is considered to be part of the runtime library, according to this FAQ: http://www.gnu.org/licenses/gpl-faq.html#IfInterpreterIsGPL Ladislav is stating that being statically linked makes it part of the interpreter, though there are counter-examples of statically linked runtime libraries in other programming languages that legally infect the code they run. It is considered bad form though, so you don't see it often. It's an ambiguous situation, so a statement resolving the ambiguity would be helpful here. | |
Andreas 27-Sep-2012 [737] | Based on this same entry, I still don't think that how the library is linked makes any difference, as long as the library is itself interpreted. |
BrianH 27-Sep-2012 [738] | Agreed, though it doesn't matter whether the library is interpreted either. You can statically link a native library to the interpreter for use by interpreted or native code, and it can legally affect the code that is using it. The only way around it is to declare that code to be part of the interpreter rather than part of the runtime library, which can only be done with permission of the rights-holder of that code. |
Andreas 27-Sep-2012 [739x2] | Yes, the "interpreted" part does not really matter in general, but that's what is specifically applicable to R3 mezzanines. |
GPL + classpath exception would also be fine, to overcome that problem. | |
BrianH 27-Sep-2012 [741] | Using R3 natives can have that effect as well if they're not declared to be part of the interpreter. |
Andreas 27-Sep-2012 [742] | Yes, IMO as well. But that's an issue I don't really want to discuss because it is less obvious/more complicated. The mezzanine problem is already as bad as it gets. If we can't satisfyingly overcome that, we don't even need to discuss other GPL-induced problems. |
BrianH 27-Sep-2012 [743x2] | Given that this is not how REBOL actually works, declaring it to be a monolithic interpreter would be more of a legal declaration to not sue. Such a declaration would also affect REBOL script code that dynamically loads extensions, not just REBOL code. |
Only statically embedded extensions would be affected by the GPL then. | |
Maxim 27-Sep-2012 [745] | but we can't even derive from any mezz without jeopardizing our code, no? |
Andreas 27-Sep-2012 [746x2] | Yes, we can't even _use_ any mezz without the GPL affecting our code. |
You can of course choose to interpret the GPL differently. But I wouldn't bet my business on that. | |
BrianH 27-Sep-2012 [748] | Same with statically embedded modules, like the mezzanine code. The mezzanine source could be licensed as MIT, but by being linked into r3.exe it would be constrained by the GPL, essentially becoming MIT/GPL dual licensed, and would need to be declared to be part of the interpreter in order for your code to use them at runtime. However, if the mezzanine source was licensed as MIT, you would be able to derive code from them without being affected by the GPL, even if the way that you read that source was to use the SOURCE function at runtime. |
Pekr 27-Sep-2012 [749] | Open sourcing REBOL mentioned on OSNews.com, no comments yet ... |
DocKimbel 27-Sep-2012 [750] | So programming language announcements (not related to an OS project) are not off-topic on OSNews? Good to know for Red v1.0. ;-) |
Pekr 27-Sep-2012 [751] | They have strange policy on that. Back at the time, Thom refused to inform RT starts R3 project. I found it interesting news, he declined. But - OSnews degraded badly in last xy years, many "political" topics, no real industry news. Engadget completly rules the game ... |
DocKimbel 27-Sep-2012 [752] | Right, it has changed quite a lot since it has become Thom's personal blog... |
Ladislav 27-Sep-2012 [753x2] | Andreas, there is apparently a difference between code/data that is considered to be part of the interpreter and... - yes, hat is exactly what I tried to underline, and I especially wanted to cite these: If a programming language interpreter is released under the GPL, does that mean programs written to be interpreted by it must be under GPL-compatible licenses? When the interpreter just interprets a language, the answer is no. The interpreted program, to the interpreter, is just data; a free software license like the GPL, based on copyright law, cannot limit what data you use the interpreter on. ...However, when the interpreter is extended to provide “bindings” to other facilities... - I have to emphasize *when the interpreter is extended* and *other facilities* - i.e. other code not considered to be a part of the interpreter. Also, code present in the interpreter does not qualify as *interpreter extension* providing bindings to *other facilities* |
there are counter-examples of statically linked runtime libraries in other programming languages that legally infect the code they run. - I suppose that is not an interpreter case, though? | |
Andreas 27-Sep-2012 [755] | I created a "Licensing" group to move the licensing-related discussions to, so as to free up Ann-Reply again to discuss other more recent announcements. |
Ladislav 27-Sep-2012 [756x2] | I do not see the group |
aha, OK | |
DocKimbel 27-Sep-2012 [758x2] | Kaj: great job! |
I'll work on shared libs support for other platfoms very soon. | |
Pekr 27-Sep-2012 [760] | Good job, guys, especially as R3 being open sourced becomes de-facto competition to Red. Nice you are supporting it though ... |
Andreas 27-Sep-2012 [761] | Congrats Kaj, the example looks very nice: http://red.esperconsultancy.nl/Red-REBOL-3/artifact/06f9d09a50394ed9f957f568e29bae8e651e9202 |
Kaj 27-Sep-2012 [762] | Thanks |
Endo 28-Sep-2012 [763] | Cool work Kaj! |
GrahamC 28-Sep-2012 [764] | So, would this mean that you maintain eg. the one curl binding for red/system and then also use the same for R3 ? |
Pekr 28-Sep-2012 [765x2] | I don't understand the example. My imagination was, that I will have some make-native function or make-extension in R3, and somehow very easily I just plug in the red/system code, without the need of knowledge to cumbersome and cryptic R3 extension interfacing at all - I don't want to know anything about RX_Init etc functions ... |
... kind like R2 DLL interface in R3 level .... | |
Kaj 28-Sep-2012 [767x4] | Yes, I want to rebase my cURL and 0MQ extensions on the Red bindings |
On top of the Red bindings, you'll have to do marshalling to the R3 extension interface and data types. There's no way around that | |
A make-extension function to wrap the compilation of the extension would require the Red compiler to be ported to R3. In the end, this won't work anyway, because it's going to be ported to Red itself | |
The R2 DLL interface is rather specific functionality: it implements dynamic loading and binding of libraries. This could be implemented as a specific R3 extension, written in Red | |
Arnold 28-Sep-2012 [771] | Currently it only works on Windows, and you need the dyn-lib-emitter branch of Red/System I did n't know you have a Windows machine ;) |
DocKimbel 28-Sep-2012 [772] | He doesn't, I do, that's my contribution to this bridge. ;-) |
Kaj 28-Sep-2012 [773x3] | On several occasions in my life, I've programmed on a machine I don't have |
Adrian, the R3 interface is abstracted, so the internal implementation can change. Making it more efficient can only be done by accessing the implementation directly, which would kill the abstraction | |
Carl put a lot of energy into building his island, on which he could remain isolated from the big, bad world. With the source opened, it could be argued that this was in vain | |
BrianH 28-Sep-2012 [776x3] | (Replying to AdrianS in Announce) R3's extension mechanism is designed to make it more possible to make and compile extensions that will continue to work even when R3 is updated. Even with the source open, that is still a value. The command dispatch model is also really useful for implementing native dialects and JIT compilers. The marshalling mechanism is also reasonably fast by FFI standards. It could, however, use better marshallers for series, and more datatype coverage. |
Oh, sorry to duplicate some of your response, Kaj. | |
If the Red JIT compiler were made available in an extension, you could use commands to dispatch to compiled functions withough having to write the compiler in R3. | |
Kaj 6-Oct-2012 [779] | Very cool action, Nick. Thanks for doing that |
james_nak 6-Oct-2012 [780] | Thanks Nick. |
older newer | first last |