World: r3wp
[!REBOL3-OLD1]
older newer | first last |
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. |
older newer | first last |