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

AltME groups: search

Help · search scripts · search articles · search mailing list

results summary

worldhits
r4wp5907
r3wp58701
total:64608

results window for this page: [start: 62601 end: 62700]

world-name: r3wp

Group: !REBOL2 Releases ... Discuss 2.x releases [web-public]
Pekr:
9-May-2011
Hmm, maybe a reverse question - what is missing in R3 in order to 
use it instead of R2? Just curious ....
Kaj:
9-May-2011
It would be messy. R2 can't be touched, so it would have to be done 
through the Library interface. That's less powerful than the R3 extensions 
interface, so you'd have to develop a separate library in C that 
mimicks R3 extensions. Some functionality such as callbacks would 
still be pretty much impossible
Kaj:
9-May-2011
What you would be developing is already in R3, so It's a lot simpler 
to just interface R2 and R3. Probably the most straightforward option 
for that is 0MQ
Geomol:
9-May-2011
Ah yes, that's a good point.
Kaj:
9-May-2011
If you're approaching it from a theoretical standpoint, then yes, 
this whole situation could have been avoided by doing things such 
as implementing the new extensions interface in R2 first
BrianH:
9-May-2011
R2 is in the backwards-compatibility phase of its existence. No new 
changes are being made to it that would break a lot of R2 code.
BrianH:
9-May-2011
That being said, something like this might be possible to add on 
to R2 as a library, though I haven't given much thought as to how.
BrianH:
9-May-2011
To integrate the extension interface into R2 would be a huge task, 
and I'm not quite sure how to get around the lack of extendable objects 
(to build the module system on, since extensions are integrated with 
the module system). Adding the handle! type would be easy; adding 
the command! type would be a bit harder.
BrianH:
9-May-2011
It would be rather difficult to fake the command! type if you are 
doing the library method, but you could use a similar method to that 
used to fake the closure! type. I am not sure how much you could 
replicate the value marshalling, and callbacks would likely be impossible.
BrianH:
9-May-2011
Have you looked into what would be necessary to make a host DLL wrapper 
for R3 that could be loadable with LOAD/library? Is it possible to 
make a host with LOAD/library directly?
Robert:
10-May-2011
To be more concrete: I mean a lib interface that uses the INIT, CALL, 
QUIT structure on the C side. Uses the access to parameters via frames 
and same return concept. And callbacks like done in R3.
Kaj:
10-May-2011
Which would diminsh the usefullness of such a project
Group: Red ... Red language group [web-public]
Geomol:
21-Apr-2011
There are some rounding problems though, so it maybe can't be made 
easily, but probably using a trick.
Geomol:
21-Apr-2011
:) well, it's a good group for this, as Doc would consider these 
things at some point.
Geomol:
21-Apr-2011
With e defined, the hyperbolic cos, sin, tan, etc. are easy (REBOL 
doesn't have these), and maybe also normal cos, sin, tan!? At least 
for complex numbers, but not so sure about reals. Maybe a better 
mathematician can tell us that? Ladislav?
BrianH:
21-Apr-2011
John, in a real REBOL-like language + is implemented using ADD; all 
operators redirect to their associated functions. You could do a 
similar trick with a compiled REBOL-like language like Red. This 
brings up another question though: Will Red implement operators in 
a fixed-predefined-set way like R2, or in a user-defineable way like 
R3? I hope the latter, though the former would make sense for Red/System, 
at least in the pre-Red stage of its development.
Geomol:
21-Apr-2011
User-defined operators are really nice, I think. Being able to write 
things like:

remove 42 from [1 2 3 42 177 280]

where FROM is just a simple FIND.
BrianH:
21-Apr-2011
For now in R3 there are some restrictions about the kind of functions 
you can make an operator from - number of arguments and such. It 
is planned to eventually relax one of the restrictions, and allow 
function!, closure! and command! functions to be used. However, even 
in Red there will likely need to be a fixed format to the arguments 
of such a function: 2 args with no refinements, the first arg corresponding 
to the left side and the second arg corresponding to the right.
BrianH:
21-Apr-2011
To make a FROM op you would need to make a FROM~ wrapper function 
around FIND; you wouldn't be able to make an op from FIND directly.
Maxim:
21-Apr-2011
there could be various forms to the ops.  there can be a way to tell 
the op building process to be unary binary or ternary.
Geomol:
21-Apr-2011
Yeah, operators with only 2 arguments sounds like a good idea. More 
and it fastly become too complex leading to confusion.
Geomol:
21-Apr-2011
Maybe NOT can be defined as a function this way?


not: func [value][either none = :value or (false = :value) [true][false]]
Dockimbel:
21-Apr-2011
Will Red implement operators in a fixed-predefined-set way like R2, 
or in a user-defineable way like R3?

 Op! will be user-defined as they were in R-sharp interpreter. Here's 
 a short extract of R-sharp's boot script:

+:  make op! :add
-:  make op! :subtract
*:  make op! :multiply
/:  make op! :divide
=:  make op! :equal?
<>: make op! :not-equal?
Dockimbel:
21-Apr-2011
Exactly, safer and cheaper to do with a compiler.
Andreas:
21-Apr-2011
no size limits, but it's obviously a lot easier to blow the stack 
if you pass around lots of large structs as values
Andreas:
21-Apr-2011
as i said, it's a portability mess
Andreas:
21-Apr-2011
other compilers rewrite the function to take an additional parameter 
with a pointer to storage used for returning the struct
Andreas:
21-Apr-2011
(this pointer is then sometimes passed via a register, others pass 
it via the stack)
BrianH:
21-Apr-2011
Would that behavior be standardized for a particular calling convention 
and ABI? For instance, that seems like the kind of thing that would 
have been standardized by stdcall or fastcall, but maybe not for 
cdecl or pascal.
Andreas:
21-Apr-2011
afair it's a mess in all of them
BrianH:
21-Apr-2011
Sorry for all the questions - I haven't needed to write a C compiler 
yet. All the languages I've written compilers for or hand-compiled 
were really specific about this kind of thing.
Andreas:
21-Apr-2011
i have a handy reference by agner fog for intel platforms somewhere
Andreas:
21-Apr-2011
Kaj: "I tested the new section headers on Syllable Desktop.

memmap_instance() RO overlap RW (08048000 + 00001000 -> 08048000)"


besides the entry point address being a problem, this could also 
be due to segment alignment, which we basically ignore, at the moment. 
could you try changing "page-size: 4096" to "page-size: 1" and see 
where that gets us?
Kaj:
21-Apr-2011
I have to set the start address back to the Linux one to be able 
to compile with a changed page size
Kaj:
21-Apr-2011
A page size of 1 works on Linux, but on Syllable the load error is 
still exactly the same
Kaj:
23-Apr-2011
It seems logic! can't be used as a return value (last expression 
of a function) yet
Kaj:
23-Apr-2011
When I use NULL I get a smaller executable than with 0. Is that correct? 
The Windows backend emits four bytes, but the ELF backend says something 
about ignoring NULL
Dockimbel:
23-Apr-2011
NULL: a bit strange, need to check the sources for that.
Dockimbel:
23-Apr-2011
logic!: that's odd, see the 'foo function in test-logic.reds (foo: 
func [a [logic!] return: [logic!]][a])
Dockimbel:
23-Apr-2011
Strange...will look into that in a few minutes.
Kaj:
23-Apr-2011
The difference may be between a variable and a constant
Dockimbel:
23-Apr-2011
I can't reproduce your issue here, can you give me a short example 
of a function making the compiler produce that error?
Dockimbel:
23-Apr-2011
Ok, will try with a similar pattern of code.
Dockimbel:
23-Apr-2011
Can't reproduce using:

bar: func [a [integer!] b [integer!] return: [logic!]][
	either zero? a [
		either zero? b [
			print "00"
		][
			print "11"
			false
		]
	][
		false
	]
]
either bar 1 1 [print "KO"][print "OK"]
either bar 0 1 [print "KO"][print "OK"]
Dockimbel:
23-Apr-2011
It is probably a 'false word reduction issue.
Dockimbel:
23-Apr-2011
Kaj, I've just pushed a commit that should fix your issue.
PeterWood:
25-Apr-2011
I believe that the same "get-word" syntax will be used should  function 
pointers be  introduced at a later date
shadwolf:
2-May-2011
I'm a hudge militant of both the typed variable way (easy to interface 
C libraries) and the untype variable ( code more readable less maintenance 
etc...) This paradoxe tends to push me to imagine a world where the 
software will know what I need what ever the real sturcture behind 
is lets call it predictable type variable. How we do that ? I don't 
know but it seems fun enough to spend some brain cells  thinking 
of that. the idea is realy that interfacing external c/c++ java what 
ever library and maping it to the language innher variable and code 
will be absolutly transparent. (something like the .NET librabry 
browser but easier... Or more easyly we can have both system cohabiting 
side by side on the language schemes
shadwolf:
2-May-2011
though in rebol not having type for vars and () for function arg 
submition, make difficult to identify var content  distinguish var 
from function ... Maybe then  a syntaxique item like th e $ in php 
for vars or the @ in ruby for tables would be an interesting point... 
Sorry I try to think about rebol syntaxe structure like someone seing 
it for the first time
BrianH:
2-May-2011
Shad, typed variables with type inference handles the readability/maintenance 
problem pretty well, which is why several statically typed languages 
have been retrofiting type inference into them recently. Fortunately, 
Red is planned around that from the start.


Your "predictable type variable" proposal (I don't know the standard 
term either) sounds useful. Many languages do this through reflection 
facilities, but that kind of thing requires dynamically typed variables 
at least as an option if you are going to use the reflection facilities 
of the language you are interfacing with - this is necessary for 
C++ at least because there isn't a shared standard for encoding that 
information in a static way. It would be more useful for integrating 
with .NET or CORBA objects, since direct field access is prohibited 
anyways for those so there's no extra overhead in the field access 
itself, just in the runtime discovery, and ahead-of-time static compilation 
has shared rules that work on a binary standard.
Dockimbel:
3-May-2011
Awi, that would be great, I would love to see Red run on such platform 
but I'm afraid Red's memory footprint would be a bit too high for 
a 60KB of RAM (but this might be specific to the netduino platform?). 
OTOH, Red/System compiler should work nicely there. If you want to 
help for such port, we need two things:


- a target file format emitter (I guess it would be the firmware 
file format)
- a native ARM7 code emitter as Red/System back-end. 


Let me know if you want to start working on these parts, I would 
provide additional documentations.
Dockimbel:
8-May-2011
I would install a Damn Small distro instead.
Kaj:
8-May-2011
We've had a pattern of people who came to our mailing list shouting 
enthusiastically that they had found out that the "GNU C compiler" 
would compile to PowerPC or something, that they would compile Syllable 
to it over the weekend and report afterwards
Kaj:
8-May-2011
And if you don't know all the parts intimately, they can easily pose 
a big problem to a particular developer
Kaj:
8-May-2011
It can easily take me half a year to create a next version of Syllable 
Server, and that's on the same architecture
Pekr:
9-May-2011
Doc - there is many such small platforms, even x86 based IIRC. Gumstix 
is e.g. for real, a bit pricey, but definitely not vapor - http://www.gumstix.com/store/catalog/product_info.php?products_id=256
Kaj:
10-May-2011
I have updated the 0MQ binding to the latest Red version, and moved 
it to a Fossil repository:
Dockimbel:
10-May-2011
vsm-data1	[integer!]  ; unsigned char [ZMQ_MAX_VSM_SIZE] (default 
30)

 => we will need a better way to handle such arrays when interfacing 
 with third-party libs...
Kaj:
19-May-2011
What's the new syntax for a pointer field in a struct?
Dockimbel:
19-May-2011
Actually it isn't a new syntax, it's just that the compiler wasn't 
checking it deep enough until now.
Kaj:
19-May-2011
What you're saying, that's a pointer to an integer, right? But I 
need a pointer to a bigger memory area here
Kaj:
19-May-2011
Yes, it's just to reserve the space for a pointer that's used by 
0MQ, but not by Red
BrianH:
19-May-2011
I mean, don't use the word 'handle! as an alias because it will likely 
be a built-in datatype in Red, and in all Red/System functions and 
datatypes exported to Red.
Kaj:
19-May-2011
That would be just a little code, and it's obvious that you have 
to develop your programs to stay in sync with a language that's in 
alpha status
BrianH:
19-May-2011
No, that's a good reason to *add the handle! type to Red/System* 
now, as a preemptively reserved word. Not a reason to use the word 
handle! to refer to a completely different thing.
BrianH:
19-May-2011
Perhaps it could be a name for a non-dereferenceable void pointer 
type, since that's the closest C equivalent.
BrianH:
19-May-2011
Basically, Red's handle! type would be the same as R3's handle! type. 
Opaque value that is pointer sized, but can't be used as a pointer 
without typecasting, and no arithmetic possible. No conversions to 
other datatypes either in typesafe code.
Kaj:
19-May-2011
That's in Red. Red/System is a different context
BrianH:
19-May-2011
Yes, but Red/System's main purpose is to do things with Red data, 
so it needs to have access to Red's types, even if its own literal 
types are different. So Red/System needs to have a handle! type, 
even though Red/System code would need to typecast values of that 
type to something else in order to be able to do anything with them.
Kaj:
19-May-2011
Yes, a temporary difference in declaration, because as of now, there 
is no handle! type to declare
Kaj:
19-May-2011
Why? That would be the behaviour in Red. Red/System's task is to 
actually be able to do something with a pointer
Kaj:
19-May-2011
Unless you want to make Red a true capabllities language, but you 
are opposed to that concept
BrianH:
19-May-2011
In a strongly typed language, which even Red/System is, dereferencing 
a pointer means getting a value back that is of a known type; pointer 
arithmetic means adding in increments of the size of that type. A 
void pointer references nothing, and that nothing has no size. You 
must be required to typecast to another pointer type explicitly if 
you want to dereference the pointer, or to know how much to increment 
or decrement it.
Kaj:
19-May-2011
I'm not under a strong impression that this is planned. So currently, 
I need to treat Red/System as weakly typed
BrianH:
19-May-2011
It is not currently planned *by Doc* to have Red/System be a complete 
language, since he only needs it to access a few system libraries 
and implement the Red runtime. He's said that others are welcome 
to contribute the necessary changes to make Red/System a more complete 
language.
Kaj:
19-May-2011
I understand the burdens of future programs, but I've written a program 
right now that I have to keep working
BrianH:
19-May-2011
Well, it can't become strictly strongly typed, as a certain amount 
of type breakage is the whole point of its existence. You can't be 
strictly strongly typed if you have typecasting, pointer arithmetic, 
literal pointer values, or the ability to call C code. Red/System 
is supposed to be strongly typed with those rule breakers, in order 
to shield Red itself from those features.
Kaj:
19-May-2011
You wanted to know if the appointed error locations are correct. 
That seems to be alright, and the error for a struct is nicely descriptive, 
but an error for a function definition is rather unspecific:
Kaj:
19-May-2011
Oh wait. I have to use a block for #define, and then it works. But 
not ALIAS
Kaj:
19-May-2011
And the error output for a function starts at the offending parameter, 
so that's actually pretty good, but it's not obvious
Kaj:
19-May-2011
Here's a message that's not very clear:
Kaj:
19-May-2011
As a nitpick, there's an excess space in the message, before the 
comma
Kaj:
19-May-2011
So it seems that there is no way anymore to pass a null pointer to 
a function or to compare a pointer to null
Andreas:
19-May-2011
but `as pointer! [integer!] 0` is fine, if it works. the spec needs 
a fix so that the examples match the syntax spec, though.
Kaj:
20-May-2011
Thanks. The 0MQ binding is a nice test case
Dockimbel:
20-May-2011
I was a bit confused yesterday about ALIAS usage, due to this ticket: 
https://github.com/dockimbel/Red/issues/39.I jumped on fixing it 
too fast without first checking the specification, so I mistakenly 
extended ALIAS beyond its original purpose (which is just for aliasing 
struct! declarations, as described in section 4.5.5 of the specification).
Dockimbel:
20-May-2011
I just pushed a new commit that reverts back some of the changes 
I did for aliased types yesterday, and fixes the compiler errors 
reported by Kaj.
Dockimbel:
20-May-2011
I have uploaded a patched version of the 0MQ binding here: http://static.red-lang.org/tmp/red-0mq-fixes.zip
Dockimbel:
20-May-2011
Among the changes, 'null is now a global variable defined as a null 
pointer.
Kaj:
20-May-2011
I need a pointer to a struct of which only 0MQ knows the structure. 
So any pointer will do, unless you want to make Red/System strongly 
typed
shadwolf:
20-May-2011
dockIbel one cool thing thqt could help promoting RED would be to 
do a openSUZE minimal distro using their tool that gives a linux 
ready to use out of the box with all needed to code or enhance red
shadwolf:
20-May-2011
I know it zas made for Illumination software creator and was a good 
enightenment for it
shadwolf:
20-May-2011
could be a good way in a middle term to have tools + OS etc in a 
single CD
Dockimbel:
21-May-2011
You're right, I should add a mention about it on red-lang.org.
Dockimbel:
21-May-2011
Kaj: I pushed a few fixes and changes on ALIAS support, it now behaves 
strictly as described in the specification. For the 0MQ binding, 
you need to replace [struct! message!] occurences with [message!] 
to make it compilable with the new version.
Kaj:
21-May-2011
Have a new batch of issues, but will research more first
Kaj:
22-May-2011
a/count: p/count
Kaj:
22-May-2011
a/count: p/value
Dockimbel:
23-May-2011
4.6.2: right too, it is a typo.
Dockimbel:
23-May-2011
Red/System requires at least a 32-bit CPU.
62601 / 6460812345...625626[627] 628629...643644645646647