• Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r4wp

[#Red] Red language group

Kaj
23-Jun-2013
[8592x2]
I think Red/System counts as beta, as far as v1 is concerned
I don't know if it's a problem. What I do know is that the Android 
port doesn't fully work yet. If you consider it developmental, then 
you can also expect Doc to add examples later. Anyway, I was just 
providing a preliminary answer for you because Doc is offline
DocKimbel
23-Jun-2013
[8594x3]
Hi Oldes, I have pushed online only the low-level layers of the Android 
port. I will push the rest after some cleanups most probably tomorrow. 
It's working fine on pre-4.1 Android systems, but I'm still struggling 
with low-level bugs with 4.1+.
I will provide the full source code of the preview demo I've posted 
and will probably add another demo. It's still low-level manipulations 
of the Android Java framework, the final layers of abstractions are 
not yet there (dialects, schemes, ...).
I will need to go back to object! implementation in Red before implementing 
those layers.
Andreas
23-Jun-2013
[8597]
Quick testing of the MT Red/S and C versions on my machine give a 
~4x difference in speed.
Kaj
23-Jun-2013
[8598]
Odd. Is that on a Mac?
Andreas
23-Jun-2013
[8599]
Linux
Kaj
23-Jun-2013
[8600]
Which GCC version?
Andreas
23-Jun-2013
[8601]
Red/System (current master, g0c9c1bf): 2.5s
GCC 4.8.1 -O0: 1.9s
Clang 3.3 -O0: 1.6s
Clang 3.3 -O2: 0.6s
GCC 4.8.1 -O2: 0.5s
Kaj
23-Jun-2013
[8602x3]
So there's a much bigger difference between optimised and unoptimised 
versions than in previous tests
I was on an older GCC version then, 4.1.2 or 4.2.3
Xie is on Windows, and his compiler is apparently called cl. XieQ, 
is that CLang? Which version?
Andreas
23-Jun-2013
[8605]
That's MSVC.
Kaj
23-Jun-2013
[8606]
Perhaps GCC has gotten better at optimisation
Andreas
23-Jun-2013
[8607x3]
Compared to 6-year old GCC 4.1.2, it certainly has improved a lot.
Just dug one of your Fibonacci results from back in Feb-2012, that 
used GCC 4.43.
dug up*
Kaj
23-Jun-2013
[8610x2]
Oh, don't remember that
Ah, it must have been GoboLinux's GCC
Andreas
23-Jun-2013
[8612]
You mentioned the benchmarks running on Syllable Server.
Kaj
23-Jun-2013
[8613x3]
Yes, that's why I thought 4.2.3. But I would have tried them on Syllable 
Workstation on top of Syllable Server
That's an unreleased GoboLinux-on-Syllable-Server FrankenLinux
So it's a pretty big difference in optimisation, and MSVC doesn't 
show it
XieQ
23-Jun-2013
[8616]
I use VS2012 and it's MSVC ver 17.
Kaj
23-Jun-2013
[8617]
Thanks
Arnold
23-Jun-2013
[8618]
We

 are a team! Yoho!! According to Frank Ruben on the Red mailinglist. 
 He has a question about interfacing a C app in Red/System.
XieQ
24-Jun-2013
[8619]
Now in Red/System, we can't pass a function as parameter to Red/System 
FUNC,
but we can pass it to external C FUNC, right?


cmp-func!: alias function! [left [byte-ptr!] rihgt [byte-ptr!] return: 
[integer!]] 
quick-sort: func [
	base	 [byte-ptr!]
	n		 [integer!]
	size	 [integer!]
	cmp-func [cmp-func!]	
][
	; can't use cmp-func in this function
]
DocKimbel
24-Jun-2013
[8620x3]
XieQ, that should work too.
You should try passing the function! pointer as integer! then type-cast 
it inside the function. IIRC, function! cannot be  yet used in a 
Red/System func spec block.
(But as you mentioned, function! is accepted for external functions)
XieQ
24-Jun-2013
[8623x2]
I write a simple test  try to understand it, it's can be compiled, 
but the output is not expected
Red/System []


cmp-func!: alias function! [left [byte-ptr!] right [byte-ptr!] return: 
[integer!]]

cmp-int: func [
	left [byte-ptr!] right [byte-ptr!]
	return: [integer!]
	/local a b
][
	a: as int-ptr! left
	b: as int-ptr! right
	a/value - b/value
]

bar: func [
	cmp-func [cmp-func!]
][
	a: 1
	b: 2
	print cmp-func :a :b
]

bar :cmp-int
Pekr
24-Jun-2013
[8625]
XieQ - that's what Doc stated, no? you use cmp-func! function type 
in func spec block, which is not allowed (except the external functions, 
whatever that means). Sorry if misunderstood on my side, just trying 
to point that out ...
XieQ
24-Jun-2013
[8626x2]
it's print a memery address ( 00401A8F in my windows 7)
Pekr, I will try again
DocKimbel
24-Jun-2013
[8628]
Yes, because the compiler is not yet able to process `cmp-func [cmp-func!]` 
correctly. Try to declare an integer! there and then type cast it 
to a cmp-func! inside the body.
XieQ
24-Jun-2013
[8629x2]
Got the right result! Thanks Doc
bar: func [
	cmp-func [integer!]
	/local compare result
][
	a: 1
	b: 2
	compare: as cmp-func! cmp-func
	result: compare as byte-ptr! :a as byte-ptr! :b
	print result
]

bar as-integer :cmp-int
DocKimbel
24-Jun-2013
[8631x3]
I guess I should complete the function! support at some point before 
starting on Red/System 2.0.
New try for the Red port on Android demo:
http://static.red-lang.org/hello2.apk


This time it should work fine on all devices, please let me know 
if you find any issues. Just be sure to uninstall previous version 
before installing this one (just to be sure you won't report false 
positives).
Source code for the demo: http://pastebin.com/R5ySC8sw
Andreas
24-Jun-2013
[8634]
I'm happy to confirm that this now works on my Nexus 4 :)
DocKimbel
24-Jun-2013
[8635]
Great! :)
XieQ
24-Jun-2013
[8636]
Nice! works fine on all my devices (my phone 2.3.7 and my pad 4.1.1)
DocKimbel
24-Jun-2013
[8637]
Good, so we're almost ready to start infecting the Android world 
with the Red virus. ;-)
Endo
24-Jun-2013
[8638]
Works on Samsung S3 Galaxy, Android 2.3.6
Maxim
24-Jun-2013
[8639]
doesn't work on my 4S 5.01  ;-)
DocKimbel
24-Jun-2013
[8640x2]
Actually it does even on your 4S using iAndroid emulator: http://www.youtube.com/watch?v=gehh6zIijXM
;-)
Endo, thanks for testing it.