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

World: r3wp

[!REBOL3-OLD1]

BrianH
13-Aug-2009
[16638x4]
REBOL can generate JSON just fine, and there are no carets in the 
generated output.
I am not saying that heredocs are a bad idea (and have given some 
advice on them in the CureCode ticket). However, they are not *needed* 
for any of the reasons that you have stated. The only reason we would 
want them is for minor ease-of-use improvements, and because several 
other languages in roughly the same category as REBOL has something 
similar.
RobertS, this means that you can do server-side processing of JavaScript 
using R3 right now, without heredocs. All you need to do is escape 
unbalanced { and } in your REBOL syntax { } delimited strings. The 
escaping is resolved at LOAD time, so the resulting strings don't 
have escape sequences in them. Then you can combine and generate 
the resulting string data without concerning yourself with escaping.
A server-side scripting language which cannot handle literal strings...
 (the long message)

I had a little difficulty finding any criticisms of REBOL or its 
string literals in this message that actually apply to REBOL 3 even 
now.


- { } balancing exists make generation of brace languages like JS 
and CSS easier. You only have to escape { and } if they are unbalanced 
in the syntax; most of the time they aren't. R3 already fixed the 
^{ console bug, so that isn't a problem. And the escaping only applies 
to REBOL syntax, and is resolved by LOAD - there is no escaping in 
the data once loaded.

- COMMENT is a function, not syntax, and that function doesn't even 
need to be there most of the time. REBOL doesn't have block comments 
at all. And doesn't need them for the most part - COMMENT works when 
they are needed.
- The meritocracy argument doesn't apply here (or make sense).

- Unicode is supported just fine (at least within the BMP). String 
escaping doesn't affect Unicode support.

- String escaping doesn't affect string data - it's just a syntax 
thing.

- JSON is supported just fine in R3, better than in R2 since the 
R3 data model is a better match. String escaping doesn't affect JSON.


The one part that made sense is that #[{ }]# would be bad for specifying 
JSON data - true that. Something starting with # for the start delimiter 
would be good, but not starting with #",  #{ or #[  since those would 
conflict.


I suggested in the CureCode ticket that the last character of the 
start delimiter and the first character of the end delimiter be newline 
- this would make the heredocs really distinct. There would not be 
a need for single-line heredocs because there could only be a small 
number of characters in them, small enough to escape. Just a suggestion 
though.
Sunanda
14-Aug-2009
[16642]
I'm seeing a bad conversion for alpha-77 under Windows Vista 32-bit:

    system/version
    == 2.100.77.3.1
    9200000000000000000
    == 9200000000000000000   ;; good
    9300000000000000000
    == 9223372036854775807   ;; bad  
    9999999999999999999
    == 9223372036854775807   ;; stays bad up to here 

Brian is not seeing this problem under a different Windows.

Could you try it on your rig and see what happens?
Thanks. That'll help narrow down the problem area.
Rebolek
14-Aug-2009
[16643]
I've got invalid integer error (XP on Parallels).
BrianH
14-Aug-2009
[16644]
Rebolek, the invalid integer error is the correct behavior. Anyone 
running Wine, so we can test there?
Pekr
14-Aug-2009
[16645]
Windows Vista Ultimate, 32bit edition - the same results as Sunanda 
...
BrianH
14-Aug-2009
[16646]
Anyone running 7 32bit? I only have 7 64bit and XP 32bit here.
Pekr
14-Aug-2009
[16647x2]
Sadly no Win7 here, testing system is deleted ....
BrianH: are you going to incorporate your module changes now? :-) 
Or waiting for some answers, regarding extensions first?
BrianH
14-Aug-2009
[16649x3]
I am going to wait for answers to the questions in R3 chat #5126 
to finalize my changes. I've already worked out the integration, 
but a few policy/informational matters need to be addressed.
Just tested Sunanda's number on Win7 64bit - same error as Vista. 
Reasonable to assume that Vista 64bit is the same.
Some of my module changes involve shuffling code from one function 
to another. It's possible that Carl's added code in IMPORT should 
be moved to LOAD, for stability and flexibility. I also integrated 
extensions into the module checking and override model, but need 
to know whether there will be problems with doing LOAD-EXTENSION 
more than once with the same extension (necessary to see if it is 
already loaded).
Pekr
14-Aug-2009
[16652]
BrianH: what are options to get e.g. SQLite driver running? If I 
understand it correctly, you can 1) include C source code of SQLite 
into your extension 2) wrap SQLite DLL from your extension ...
BrianH
14-Aug-2009
[16653x2]
You can also statically link SQLite into your extension DLL, and 
just export your extension wrapper code, or the whole of SQLite if 
you want to do the trick like tclsqlite or System.Data.SQLite. The 
real trick is making a proper database access model that fits into 
R3. This might be tricky with extensions v1 because we don't have 
device support yet.
With extensions v1 it's much easier to make a compiler than it is 
to provide SSL or database access.
Pekr
14-Aug-2009
[16655x2]
Really? Why?
If you look into R2 SQLite driver, then it is scheme around few calls 
to wrapped DLL functions. I am not looking for something more. Lack 
of DB drivers is what imo holds guys back from turning into R3. There 
is less and less reasons, to use R2.
BrianH
14-Aug-2009
[16657]
I thought I'd need user-defined function types to make a JIT compiler, 
and those are much further down the road than devices. It turns out 
tthat the command! type is sufficient, today. I could start adapting 
a JIT next week.
Pekr
14-Aug-2009
[16658x2]
So I just thought, that as an excercise, someone could "port" the 
SQLite driver, even if architecture might not be ideal. Why Device 
should be needed here? I know it would be better to be async non 
blocking, but we did not have it with R2 either, no?
what? Really? What kind of JIT would it be? What exactly would be 
"jitted"? I don't expect normal REBOL code here, but some kind of 
limited dialect?
BrianH
14-Aug-2009
[16660]
In R3, async non-blocking is essential - in R2 it was optional.
Pekr
14-Aug-2009
[16661]
So you think that next logical step for RXI is to support device 
model?
BrianH
14-Aug-2009
[16662]
Yes.
Pekr
14-Aug-2009
[16663x3]
What needs to be done here? Carl making some low-leve exposure of 
Device commands to RXI interface?
OK, then push Carl to go that way :-)
The problem is, that both Device and RXI models are not much practically 
tested, no? Or does R3 uses Devices internally already for IO?
BrianH
14-Aug-2009
[16666]
I'm not sure how devices will be integrated, but know they must be, 
and soon. R3 uses devices internally and  they work great. The trick 
is integrating devices with plugins.
Pekr
14-Aug-2009
[16667x2]
there is no spoon
 ... :-) there are no plugins, just extensions, RXI for short :-)
Google tries to propose unified way for browser extensions. I wonder 
if R3 could become such an extension, if we would benefit from such 
situation? Probably different model than having browser plug-in ...
BrianH
14-Aug-2009
[16669x2]
I've traced through the RX code (there isn't much of it - extensions 
are *simple*). It's a great model. I have a few low-level questions 
and one or two requests, but the overall model is pretty solid. There 
are GC considerations that still need addressing though.
Google browser extensions are written in Javascript - if you want 
to use REBOL, you'd either need to compile to Javascript or be a 
plugin (which is supported by Chrome). The closest thing in R3 to 
Google's browser extensions is the module!.
Pekr
14-Aug-2009
[16671x2]
Have you looked to the LUA model? I posted you a link privately - 
seems similar ...
What? I read some topic called - Google native extensions ...
BrianH
14-Aug-2009
[16673x2]
As for the JIT, I could write the compiler in REBOL and generate 
the intermediate code of the JIT, then pass that intermediate code 
to the JIT with a command. The JIT would then generate a function, 
add it to its list, and return the list index as an integer. That 
integer can be  used to create a new command!, which RX_Call can 
dispatch to the internal JITed function.
Since extensions can't be statically linked with R3, I can wrap a 
LGPL JIT like libjit. It should work great. I'll be stuck with the 
RX data model, but that cold be plenty for the types of functions 
you wold write just for speed.
Pekr
14-Aug-2009
[16675]
So we've got Rebcode replacement? :-)
BrianH
14-Aug-2009
[16676]
What, did you think Carl was going to be the one to replace rebcode? 
:)
Henrik
14-Aug-2009
[16677]
Sunanda: I get invalid integer too under XP under VMWare.
Pekr
14-Aug-2009
[16678]
no, it is just the damned thing is possible finally :-)
BrianH
14-Aug-2009
[16679]
Henrik, yeah, XP seems to do the right thing, throwing an error - 
it's only Vista and 7 that fail and return the wrong number.
Henrik
14-Aug-2009
[16680x3]
a 64-bit issue?
OSX reports bad numbers too instead of invalid integer.
under a76, that is
BrianH
14-Aug-2009
[16683]
Not a 64bit issue, a Vista+ issue.
Henrik
14-Aug-2009
[16684]
I wonder about Linux now too, unfortunately I can't test.
Gabriele
14-Aug-2009
[16685x2]
Anton, did you miss the "I'd rather" part? Did I say "Robert should" 
or even "Robert must" anywhere? LOL. :) I even suggested syntax, 
#[{ ... }]# though I don't like the idea at all.
Brian, how likely it is that you will find the three characters }]# 
in JSON text?
Anton
14-Aug-2009
[16687]
Gabriele, I probably worded my last comment a bit strongly. (I don't 
want to enflame the situation..) Of course I highly value your judgement, 
opinions and suggestions. I should say, though, that I read your 
previous comment as somewhat dismissive of RobertS concerns / problem.