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

World: r3wp

[Red] Red language group

Dockimbel
22-Jun-2011
[2403]
I guess it emulates an Intel CPU
Andreas
22-Jun-2011
[2404]
uname -m ?
Dockimbel
22-Jun-2011
[2405x2]
i386
works
Andreas
22-Jun-2011
[2407]
should be just `pkg_add -r compat6x` then
Dockimbel
22-Jun-2011
[2408]
thanks!
Andreas
22-Jun-2011
[2409]
(or -i386 :)
Dockimbel
22-Jun-2011
[2410x4]
nope, add to append -i386 :)
add => had
solves REBOL issues
Let see now if the compiler is running
Andreas
22-Jun-2011
[2414]
hm, automatic creation of the builds/ folder bugs
Dockimbel
22-Jun-2011
[2415]
Can you push a fix for that? (I'm cooking at the same time)
Andreas
22-Jun-2011
[2416]
yep, will do
Dockimbel
22-Jun-2011
[2417x2]
# builds/hello 
ELF binary type "0" not known.
builds/hello: Exec format error. Binary file not executable.
Have you pushed your BSD-specific ELF fixes or does it require a 
proper target config?
Kaj
22-Jun-2011
[2419]
I think FreeBSD's ID is somewhere around 5
Andreas
22-Jun-2011
[2420x2]
nope, i didn't push the freebsd emitter hack mainline
that just hardcoded freebsd-specifics, so would have broke linux 
in that form. only a quick experiment to see what's really necessary
Dockimbel
22-Jun-2011
[2422x2]
Could you parametrized those BSD-specific changes with a compiler 
option?
Kaj: SIZE? has been extended to work with datatypes and aliases.
Kaj
22-Jun-2011
[2424]
Thanks! That will make my struct allocations less haphazard
Henrik
22-Jun-2011
[2425]
Andreas, thanks for info.
Dockimbel
22-Jun-2011
[2426]
Kaj: Null allowed as a function! argument. The changes was very trivial, 
but I tested only if it compiled.
Kaj
22-Jun-2011
[2427]
Thanks again!
Dockimbel
22-Jun-2011
[2428]
Test it first before thanking me. ;-)
Kaj
22-Jun-2011
[2429]
Will do, but I'm batching the updates :-)
Dockimbel
22-Jun-2011
[2430]
Well, I guess that we should start to do the same with Red/System 
very soon.
Kaj
22-Jun-2011
[2431]
You mean releases?
Dockimbel
22-Jun-2011
[2432x2]
Yes, I mean, splitting into two branches: one for current version 
(fixes only) and one for the next version.
And make versioned releases.
Kaj
22-Jun-2011
[2434x6]
That would be good for the public. Myself, I would probably keep 
updating from trunk. I'm running a Git download through my Syllable 
build system to install a new version
Added a bunch of convenience wrappers to the 0MQ binding, to make 
functions more Red/REBOL like
SIZE? of this struct works, but it is given as 40:
message!: alias struct! [
	content		[handle!]
	flags		[byte!]  ; unsigned char
	vsm-size	[byte!]  ; unsigned char

 vsm-data1	[integer!]  ; unsigned char [ZMQ_MAX_VSM_SIZE] (default 
 30)
	vsm-data2	[integer!]
	vsm-data3	[integer!]
	vsm-data4	[integer!]
	vsm-data5	[integer!]
	vsm-data6	[integer!]
	vsm-data7	[integer!]
	vsm-data8	[integer!]
]
Apparently, the two bytes are combined into one 32 bits word. Shouldn't 
they both be aligned?
The new size? struct! and null function features seem to work
Dockimbel
23-Jun-2011
[2440x2]
Bytes don't require alignment, 32-bit values do. In message!, vsm-data1 
is aligned on a 32-bit boundary, leaving a 2-bytes hole after vsm-size.
You could compensate for that by splitting vsm-data8 in 2 bytes values, 
so that the global size remains the same as the C struct. The cleaner 
solution should be to introduce an array! type, which we will do 
at some point.
Kaj
23-Jun-2011
[2442x8]
OK, thanks
I like the enhanced type casting syntax
It solves the problem that you don't know how to write a cast because 
in for example
as [handle!] x
handle! is a #define
I'm getting this:
*** Compilation Error: more than one expression found in parentheses
That seriously limits the usefulness of ANY and ALL
Dockimbel
23-Jun-2011
[2450]
How does that limit ANY and ALL?
Kaj
23-Jun-2011
[2451x2]
unless all [
	(
		message: receive socket 0
		as-logic message
	)(

  prin "Received request: "  print as-c-string message-data message
		end-message message
	)(
		;wait 1
		send socket  as [byte-ptr!] reply  1 + length? text  0
	)
][
	print zmq-form-error system-error
]
That's how I always use them