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

World: r3wp

[World] For discussion of World language

Geomol
20-Dec-2011
[737x2]
About copying from a port, I get a zero, if the port is closed, but 
just under OS X and Linux. Windows version seems to hang in that 
situation. Networking code is open source, and you're welcome to 
suggest changes. I consider using a lib for networking instead of 
coding it all by hand.
SHIFT and ROTATE can only operate on 64-bit integers for now. We 
have to see, if operating on binary! and maybe other datatypes is 
needed.
sqlab
20-Dec-2011
[739]
at the moment i am just in holiday and have only limited access and 
not the infrastructure i am used too. maybe when i am back, i will 
have a look at the code.
Geomol
20-Dec-2011
[740]
Suggestion:


Some routines return a pointer to a structure, like LOCALTIME (from 
LIBC). The structure is struct tm and consists of 11 fields.


In World, we can define LOCALTIME to return a pointer to a handle!, 
but how should we get to all the data fields?


I suggest, TO should be used to copy data from a handle to a structure, 
like:

tm: struct [
	sint sec
	sint min
	sint hour
	sint mday
	...
] none

h: localtime time	; time is some variable holding seconds
to tm h	; This will copy the data (pointed to by h) to tm

Comments? Concerns?
PeterWood
20-Dec-2011
[741]
As I understand localtime is not thread safe, the thread safe version 
locatime_r requires the address of a tm structure as an argument. 
(Though it returns the pointer to that same structure if the call 
is succesful.


In general, isn't it a better option for strucutures to be allocated 
in World rather than the called function?
Geomol
20-Dec-2011
[742x2]
Yes, it's probably a better idea to use routines, where you can allocate 
the structure in World, and handle the routine a pointer to it. But 
some routines does the other thing. In the case of localtime, it's 
a static buffer. Some routines in some libraries dynamic allocate 
memory, that the user can deallocate again with other routines. (Oldes 
pointed me to such a case in ImageMagick.)


If World should support calling such routines and be able to operate 
on the result, we need something like my suggestion, I think.
In the ImageMagick/MagickWand example, it was a string, and it's 
possible to get the string from a handle in World with:

	to string! handle

I thought of something similar with structs.
PeterWood
20-Dec-2011
[744]
The to approach seems neat syntactically but is there a danger it 
would be slow with large data structures?
Geomol
20-Dec-2011
[745x4]
I don't think so, as it's a simple memcpy. The C code looks like 
this:

	if (rb->type == STRUCT_T) {
		if (rc->type == HANDLE_T) {
			Struct *U = (Struct *) rb->value.rc;

   memcpy (U->u, (char *) ((Handle *) rc->value.rc)->pointer, U->size);
		} else
			invalid_argument (W, rc);
	} else
		invalid_argument (W, rb);
The alternative (as I see it) is to not be able to access such structures.
Routines able to operate on structures, you define in World and give 
a pointer to to the routine, doesn't need this memcpy, and it'll 
work today.
To avoid the memcpy, the AS function could be used to redefine a 
handle to a struct. Like:

	as tm handle


, but then handle is redefined as a struct, and it now points to 
a mem area, the routine made. So this can't be deallocated by World, 
and the memory management has to deal with that situation. Not good 
in my view.
Geomol
22-Dec-2011
[749x4]
New release at https://github.com/Geomol/World
- Added ability to run script from command line
- Added command line options: -i -q -v
- Added usage (view usage for example with: world -?)

- Now cortex.w is found, even if world is started from other directory 
(using argv[0] in C)

- Added facility to copy handle data to struct: to <struct> <handle>
- Removed ?? (not useful because of binding rules)
I found a way under OS X using AppleScript to launch World scripts 
from the Finder by dobble-click, and to start World the same way, 
if anybody is interested. It may be useful for REBOL and other languages 
as well. The method makes a world.app. Speak up, if you need it.
I would like to hear your experiences with launching world scripts 
from command line, or use world to run services, etc.
Oldes
22-Dec-2011
[753x2]
world_win32 -? crashes on W7 64bit
ech.. crashes completely when I run it from CMD... starting by clicking 
on icon is fine
Geomol
22-Dec-2011
[755x3]
I test under WinXP with cmd and with cygwin bash terminal, and it 
works:

C:\world\src>.\world.exe -?
Loading Cortex... Done
usage: .\world.exe [options] [script]
...

I should get a Win7 soon, then I can test that.
And then I should be able to make 64-bit Windows version too.
You should also be able to see the usage with any other option not 
recognizes, like: world -h
Maybe the -? is the problem?
Maxim
22-Dec-2011
[758]
I'm not sure about allowing typecasting from handle!.  it sort of 
defeats the purpose of an opaque pointer handler IMHO.   the better 
alternative would be to allow the routine to define what struct pointer 
type it returns directly.
BrianH
22-Dec-2011
[759x3]
The argv(0) method doesn't work in some circumstances on Windows. 
R3 has been running into some problems because of that.
http://issue.cc/r3/1892shows some circumstances that will trigger 
the problem, so it's a good model for building tests.
Andreas wrote this earlier, in response to your question about this:


Is there a way to figure out, what directory a command launches from, 
which will work across platforms?

Yes and no. There are platform-specific ways. This gist of it:

- Linux: readlink("/proc/self/exe")
- OSX: _NSGetExecutablePath
- Win32: GetModuleFileNameW

(We recently discussed this issue in relation to R3 as well.)
Geomol
22-Dec-2011
[762]
The argv method was fast to implement and works in my cases, so I 
went with that for now. It maybe will need to be replaced by something 
else. Putting cortex.w (and user.w later) into an install dir like 
Library/Application Support/world/ could be a way under OSX, and 
something similar on other platforms.
Geomol
23-Dec-2011
[763]
New version uploaded with system/options/args and some changes to 
quiet mode.
Gregg
23-Dec-2011
[764]
Great to see continuing progress John!
Geomol
26-Dec-2011
[765]
Thanks, Gregg. Some thoughts...


I create World, because I need the tool. So when I have the functionality 
planned, I've reached one of my goals, because I then have the tool, 
I need for my own future developments. For World to become a success 
for others to use also, it needs to be better in crucial ways than 
the tools, others use today. Therefore I also focus on making World 
slim (not bloated), stable and bug-free, very well defined, easily 
integratable and with good performance. There still is work to do 
in all these areas.
btiffin
28-Dec-2011
[766]
I have World calling COBOL code.  It'll be nice to get a full on 
64 bit core though.  Much mucking about with 32 bit libraries, compiling 
COBOL in a VBox etc.

Getting close to automating the Dictionary wiki pages as well.


Adding to the old topic of openeness.  OpenCOBOL is open source, 
but very few people fork it.  Roger is the principal developer, and 
we wait for his releases ... but we get to see the compiler, build 
it on our platforms.   John, I don't want to see World core open 
so I can change it, I'd like to see it open so I can read it, build 
to suit, learn things.  So, if it's not asking too much, put the 
core code up in a read-only repo and ignore the forks while you develop?

Lastly; fun and looking forward.
Geomol
29-Dec-2011
[767x2]
I have a Win7 (64-bit) install now and did some work yesterday on 
porting World. I ran into problems with building libffi, which World 
use. I will look into it.
Another try to close the topic on openness: So you expect to get 
man-years of work open-sourced for free? And this in a situation, 
where I get nothing from doing so? Please, be serious! World is not 
a hobby-project for me. I have invested a lot of time and money in 
this.

I have my hands full, and the World project do very good progress 
right now. I see no business benefit from making World open source 
at this point in time.

Case closed. :)
Pekr
29-Dec-2011
[769]
Geomol - it is just that you depreciate psychological factors. Ppl, 
especially with previous experience with RT, are very carefull here. 
In the end, you might just wonder, why noone is interested in such 
a model anymore. And in the end, it is just end result, which matters. 
You either get some community surrounding World, or you might wonder, 
why while your product is excellent, noone really cares anymore. 
Or - you might end up finding some nice niche e.g. embedded market, 
having lots of customers, etc. There is many possibilities, how your 
decision might influence something.


What I really don't understand is one thing - you sound too protective. 
You have full right to sound that way. But what escapes my mind is 
- "when I get nothing from doing so?".  And what do you get from 
actually not doing so? Also - do you expect any harm, caused to the 
business side of your project, by eventually open-sourcing?


As for me - I am used to commercial and licensed products. I just 
wanted to point out, that in the end, your attitude, might be contraproductive. 
If you keep product developed, ppl might feel safe, but ppl might 
also be carefull with their contribution to the project, because 
such kind of REBOL related project already failed big time. Not your 
falt, that's for sure, but the negative assumption is in the air 
nonentheless.
Steeve
29-Dec-2011
[770]
And so he wants support for free. :-)

Joke appart, I feel bad because we saw many projects failed because 
of the same reason.

A language implementation itself without real businnes application 
will get you nothing but some fame.
And so he wants support for free. :-)
Geomol
29-Dec-2011
[771x4]
I don't ask for your support.


I bring World to the awareness of you guys, because you might benefit 
some a REBOL like language in the current situation with REBOL. I 
could just have continued keeping my mouth shut and made the tool, 
I need, without others knowing about it.
benefit *from* a REBOL like ...
And I won't like World to become in a situation, where there are 
lots of bugs and no progress for years, and it's still close sourced. 
That won't happen.
I feel bad because we saw many projects failed because of the same 
reason.


Don't feel bad! A month ago, you didn't know about World. Now you 
do, and now you have an extra option. Where is no reason to feel 
bad.


Afaik projects like Boron are open source, and you may put it in 
the category of "failed projects". So open source doesn't equal success.
Steeve
29-Dec-2011
[775]
Boron is not
PeterWood
29-Dec-2011
[776]
Have you thought of some "escrow" type arrangement to give people 
the confidence that World will not just disappear at some time in 
the future?


It doesn't have to be a full commercial arrangement but perhaps you 
could give a copy of the source to somebody that you trust with instructions 
on what circumstances it would be released (and how it should be 
released).
Geomol
29-Dec-2011
[777]
ok, my bad. I don't know enough about Boron.
Steeve
29-Dec-2011
[778]
And it's the very reason Boron  failed
PeterWood
29-Dec-2011
[779x2]
Boron is fully open source - it is published on gitorious
It is published under the LGPL.
Steeve
29-Dec-2011
[781]
uh !?
Geomol
29-Dec-2011
[782]
:) I take my words "my bad" back.
PeterWood
29-Dec-2011
[783]
https://gitorious.org/boron/boron
Geomol
29-Dec-2011
[784]
Peter, no, I haven't seen a reason for an "escrow" type arrangement 
yet. World has just been available for 3 weeks or so. And I feel, 
World isn't quite yet in a situation, where I would build larger 
projects with it. Close to version 1, maybe around going from alpha 
to beta release, it could be justified to make arrangements.
Steeve
29-Dec-2011
[785]
Ok  people, look at the red light :)
Flashhhhhhh !!!!
Geomol
29-Dec-2011
[786]
I bet, you play sorcerer, when you roleplay! :)