r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[!REBOL3 Extensions] REBOL 3 Extensions discussions

Andreas
29-Jan-2010
[581x2]
And in rebdev message #6257 I explain how to get extensions working 
on Linux.
(45 days ago)
BrianH
29-Jan-2010
[583]
Good. So once we resume work on such things (we're working on bug 
fixes and tickets now) the information will be there. Thanks.
Andreas
29-Jan-2010
[584]
Besides that I have 10 more patches lined up, which I held back to 
not overwhelm anybody.
BrianH
29-Jan-2010
[585x2]
Um, Carl is *right now* working on integrating community patches 
into a new host kit. Don't hold back.
Community = mostly Maxim, but you could tip the balance if you post 
your patches.
Andreas
29-Jan-2010
[587]
As I said, I posted two already, did not get any feedback so far.
BrianH
29-Jan-2010
[588]
Because we have been working on other things, mostly R2 and the web 
site (and R3 mezzanines in my case).
Andreas
29-Jan-2010
[589]
Mostly a matter of process, though. No idea if Carl is fine with 
dumping patches onto R3 chat.
BrianH
29-Jan-2010
[590x2]
He is OK with that.
If they are mezzanine fixes, you don't have to wait for Carl. You 
can submit them directly, or post them for comment there or here 
if they apply to functions that someone else is in charge of (like 
LOAD or the module system).
Andreas
29-Jan-2010
[592]
The only mezz fix I had for now, is in rebdev #6258
BrianH
29-Jan-2010
[593]
I saw that one, but it doesn't seem to be the right approach. Two 
reasons:

- .so and .dynlib aren't dynamicly linked library formats on Windows, 
.dll isn't on Linux, etc.

- It kind of defeats the purpose of extensions: making all of that 
platform-specific stuff go away.


Don't get me wrong, the current behavior also has the second problem. 
Extensions are imported like modules, and so the code that is asking 
for them has to specify the filename to load them. However, *that* 
code is supposed to be cross-platform, so putting a platform-specific 
filename in their Needs list is inappropriate.


What do you think of using a generic filename extension like .rx 
for extensions, then having LOAD translate to the native filename? 
Or on platforms that don't require a specific filename extension 
for their dynamic library loader (like Windows), you could use the 
.rx extension directly.
Andreas
29-Jan-2010
[594x4]
Sounds good
I'd keep on using .dll on windows, though
And I'd also keep the platform specific extensions in system/options/file-types
Why keep the extensions stored as .dll?: I'd prefer not hiding the 
fact that a rebol extension is really a proper dynamic library
BrianH
29-Jan-2010
[598]
Windows is the one that needs to use the .rx extension the most, 
and the one that we definitely can use it. And system/options/file-types 
has to have the extension we are trying to LOAD, not what it might 
be translated to.
Andreas
29-Jan-2010
[599]
Why does Windows need .rx the most?
BrianH
29-Jan-2010
[600]
It's not hiding. Most of the executable file types on Windows are 
really DLLs, including .dll, .exe, .ocx, .vbx, ...
Andreas
29-Jan-2010
[601]
Is there any harm in allowing .rx alongside with .dll .so and .dylib?
BrianH
29-Jan-2010
[602]
We need it on Windows so we can make a .rx wrapper for a .dll third-party 
library.
Andreas
29-Jan-2010
[603]
With both .rx and .dll having the same name? OK.
BrianH
29-Jan-2010
[604]
The harm comes from having .dll, .so or .dylib in the Needs lists 
of what would be otherwise portable REBOL modules and scripts.
Andreas
29-Jan-2010
[605x2]
Would only be portable, if there are ported versions of the extension 
they are needing
So if you only have a .so version of your extension, using Needs: 
%foo.so has no harm done
BrianH
29-Jan-2010
[607]
It's better to not have .so in there at all. Part of the design strategy 
of the R3 language is to at least pretend that the language is portable, 
and keep all of the non-portable stuff wrapped in extensions or hidden 
in the host code.
Andreas
29-Jan-2010
[608x2]
But realistically there will be loads of purpose built non-portable 
extensions
And as allowing them to be used with their native extension does 
no harm as far as I can tell, I'd enable that usage alongside the 
.rx
BrianH
29-Jan-2010
[610]
Doesn't negate my argument. Having them named .rx will mark them 
as extensions, which have a specific calling convention that must 
be supported. Nonetheless, if you do decide to also allow the default 
platform dynamic library naming convention, only allow the name supported 
by the current platform. So no .dll on Linux, no .so on OS X, no 
.dylib on Windows.
Andreas
29-Jan-2010
[611x3]
Sounds like needlessly complicating the code
.so is correct on osx
simply marking rx/dll/so/dylib as possible extensions for extensions 
sounds perfectly reasonable
BrianH
29-Jan-2010
[614]
Not needlessly - .dylib files don't work on Windows.
Andreas
29-Jan-2010
[615x2]
Yeah, but who cares?
They even might, if someone wrote a dylib loader for windows
BrianH
29-Jan-2010
[617]
We do. Simplifying the code would be to just support .rx and have 
the LOAD-EXTENSION native in the host code do the translation.
Andreas
29-Jan-2010
[618x5]
Go for it, then
I'd add some nice magic for .rx
And keep .dll .so and .dylib as they are now
If some use desperately wants to use .dylibs on Linux, I don't care
some user*
BrianH
29-Jan-2010
[623]
I want to keep .dll, .so and .dylib files as they are now. That is 
what we write .rx extensions to wrap.
Andreas
29-Jan-2010
[624]
But a .rx is nothing but a .so
BrianH
29-Jan-2010
[625]
No, it's a .so with a really specific set of exported functions.
Andreas
29-Jan-2010
[626x3]
Yes, the definition of a dynamic library
If you want a single platform extension: name it foo.so, use it with 
import %foo.so; if you want a multiplatform extension: create libraries 
foo.so, foo.dll, foo.dylib, import with %foo.rx
Sounds reasonable and simple to me
BrianH
29-Jan-2010
[629]
It's the same as .ocx or .exe files on Windows - what matters is 
the specific functions they export. All .rx files export the same 
functions.
Andreas
29-Jan-2010
[630]
That's fine, but they will still be platform specific binaries