World: r3wp
[Red] Red language group
older newer | first last |
Dockimbel 23-Jun-2011 [2485] | I just mean findind a way to catch those 0 values transparently. |
Kaj 23-Jun-2011 [2486x2] | There is no 0, only NULL, and this is my attempt at implementing the error catching, transparent or not |
I know you don't want more changes before implementing Red, and that's fair enough, but this is something we'll need eventually | |
Dockimbel 23-Jun-2011 [2488] | Here a code example of how you could solve that: msg: receive .... if zmq-error? [...process error...] zmq-error? could just check a flag set by last zmq low-level calls. |
Kaj 23-Jun-2011 [2489] | Such constructs would make the binding a lot more high level and would require a lot more code. I'm trying to keep complexity down for simplicity and performance |
Dockimbel 23-Jun-2011 [2490x2] | calls => call |
The added code won't make any significant overhead in performances for a network communication library, the slow parts are the network exchanges. | |
Kaj 23-Jun-2011 [2492x2] | What bothers me most is the added complexity that doesn't really solve the problem. Error handling is often something that needs to be done locally, because that's where the knowledge is to handle the problem most gracefully |
We don't have goto and longjumps, either, so there's little leeway for implementing a transparent error trapping framework | |
Dockimbel 23-Jun-2011 [2494x2] | Btw, your code snippet could be rewritten as: message: receive socket 0 unless all [ as-logic message end-message message ;wait 1 send socket as [byte-ptr!] reply 1 + length? text 0 ][ prin "Received request: " print as-c-string message-data message print zmq-form-error system-error ] |
Huh, I guess I have been too aggressive with the prin "..." line :) | |
Kaj 23-Jun-2011 [2496] | If you want the function to return a logic! status and a result to be able to handle it locally, the result needs to fetched through a pointer, which also raises complexity. We can't handle addresses very well yet, either, because get-words only work for native functions |
Dockimbel 23-Jun-2011 [2497x2] | My point was: don't return a logic! statut from functions like RECEIVE, rather set a flag and check it after RECEIVE call. |
statut => status | |
Kaj 23-Jun-2011 [2499x2] | RECEIVE doesn't return logic? |
That rewrite doesn't work. It mixes up successful and unsuccessful receiving | |
Dockimbel 23-Jun-2011 [2501] | Yeah right, I was confused by your will to return a logic!. |
Kaj 23-Jun-2011 [2502x5] | I'm flexible. :-) Not everything returns logic, only the cases that can |
I'll just rewrite it in EITHERs for now. I'm just noting that it can be made very nicely REBOL like to distinguish Red/System from C | |
By the way, 0MQ is not a network communication library per se. It can do messaging equally well between processes and even threads, so wrapper performance is significant | |
x: does [] either true [x] [x] | |
*** Compiler Internal Error: Script Error : equal-types? expected type1 argument of type: word *** Where: comp-either *** Near: [last-type: either equal-types? t-true t-false] | |
Dockimbel 23-Jun-2011 [2507] | Regression from a recent change, you should get a compilation error saying that x is missing a return value. |
Kaj 23-Jun-2011 [2508x2] | In this case, I don't need EITHER to return a value |
The crash is on the EITHER not on the DOES | |
Dockimbel 23-Jun-2011 [2510x2] | Ok, so sounds like a check that shouldn't happen in such case. |
Could you post this error (and future others) to github's tracker please? It is easier for me to manage them there. | |
Kaj 23-Jun-2011 [2512] | I won't like loosing the comfort of AltME, but I'll try |
Dockimbel 23-Jun-2011 [2513] | Thanks. |
Kaj 23-Jun-2011 [2514] | I've put it in there, but I won't be able to follow the discussion much |
Dockimbel 23-Jun-2011 [2515x2] | It is more a matter of tracking than discussing. |
It is also easier for others to follow current issues publicly. | |
Kaj 23-Jun-2011 [2517] | I understand; it's just a rotten situation that the communication isn't integrated |
Dockimbel 23-Jun-2011 [2518] | We have #red-lang on Freenode for that. ;-) |
Kaj 23-Jun-2011 [2519] | I don't do IRC, either. It's not integrated, just more fragmentation |
PeterWood 23-Jun-2011 [2520] | What is AltME integrated with? |
Kaj 23-Jun-2011 [2521x2] | The REBOL community? |
Boron is using all the right open source buzz words, except AltME, and look what traction it got | |
PeterWood 23-Jun-2011 [2523] | I'm not sure that you can associate Boron's lack of popularity with the fact that Karl does not use AltME. |
Kaj 23-Jun-2011 [2524] | Maybe, but I can associate my misgivings with communication systems that make you jump through hoops |
PeterWood 23-Jun-2011 [2525] | Do you mean the Boron mailing list? |
Kaj 23-Jun-2011 [2526x5] | Mailing lists are among the worst, yes |
Ah, the unintegratedness begins. When I type >> in GitHub to denote a REBOL result prompt, it interprets it as indent markup | |
If you had told me twenty years ago that I would be writing prose such as "Local logic! in prin-int leaks as global function!", I would have seen it as a sure sign of dementia | |
I implemented error checking in the 0MQ examples. It has revealed three bugs in Red | |
It has exploded the code, though. It's quite ugly and inefficient | |
Gregg 23-Jun-2011 [2531] | Keep up the good work Kaj! |
Kaj 23-Jun-2011 [2532] | Thanks, I intend to |
GrahamC 24-Jun-2011 [2533] | Karl has failed to engage with the Rebol community as far as I can see. |
Dockimbel 24-Jun-2011 [2534] | Kaj: thanks for the reports. I was aware of NOT issue and already encountered the local name clash, but never got the time to isolate it. Fixing them now, before going beta, is a good timing. |
older newer | first last |