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

World: r3wp

[!REBOL3]

BrianH
12-Oct-2010
[5249]
But DRM is. Whether you consider that an advantage or not though...
Maxim
12-Oct-2010
[5250]
well, we can, but its severely limits debugging and frankly there 
is a way to do .   any context should have the possibility of having 
a private/public flag on it... its that simple. whenever you try 
to reflect a private context, it returns unset! (unbound) values.
BrianH
12-Oct-2010
[5251]
It is assumed that people doing debugging have access to the source. 
And in the case of source written in REBOL, that is likely the case 
now.
Steeve
12-Oct-2010
[5252]
Though debuging the source and a runtime session, is not the same 
thing.
Maxim
12-Oct-2010
[5253x2]
but you cannot resolve the run-time in data. since things are bound 
dynamically.  the name of a func is useless... we need to be able 
to trace it back to its context by getting its value.


this doesn't give us the context, but at least we can see what the 
function really is.
if things really need to be private, then anything which comes from 
a private context could just be flagged as such and inspection routines 
wouldn't return their values.
Pekr
12-Oct-2010
[5255]
if we can't have full fledget debugger, then we are crap :-)
Steeve
12-Oct-2010
[5256]
maybe we could have a FUNC idiom that doesn't protect anything for 
debugging purposes ?
Maxim
12-Oct-2010
[5257]
right now, the only thing I can't "anamonitor" is a function body. 
 I can get that function's body, but can't resolve what the functions 
*it* contains really do.  


all the rest works pretty much as is did, actually it works better, 
since we have real inspection routines now.
BrianH
12-Oct-2010
[5258]
If we want to be able to use R3 to show third-party content, then 
full debugging without the original source won't be allowed. It's 
the way of the world now.
Maxim
12-Oct-2010
[5259]
brianh, we can't debug *with* the source right now  :-)
Steeve
12-Oct-2010
[5260]
Ok, but for our own work, we still need to do so.
Maxim
12-Oct-2010
[5261]
hehe
BrianH
12-Oct-2010
[5262]
I can (and do) want the world to be open and all information to be 
free, but it's just not the way the world is now.
Maxim
12-Oct-2010
[5263]
huh? BrianH this has nothing to do with 3rd party.  we can't debug 
functions of any kind right now.  with source, hot chocolate or from 
the movie wizard of Oz.
BrianH
12-Oct-2010
[5264]
And you can debug if you have the source. However, some of the process 
will go through your head, in the form of knowledge of where functions 
are defined. Or you can take portions of the source without the protections 
and debug them independently.
Maxim
12-Oct-2010
[5265]
debugging implies that a tool shows you that information... the name 
of a function or word is irrelevant in REBOL.
BrianH
12-Oct-2010
[5266]
If you need to debug your own source, you can do so. You just can't 
use a debugger to get past the protections.
Maxim
12-Oct-2010
[5267]
for example, if I want to do a real time debugger which shows me 
the current content of the block which is being stepped through by 
a loop... 

I can't since I can't get access to the block which is being used 
by that function...
Steeve
12-Oct-2010
[5268]
Yes Maximn, to do runtime debugging, we must be allowed to construct 
observable functions
BrianH
12-Oct-2010
[5269]
There are other methods of debugging at runtime if you have the source. 
Heck, even good old print statement debugging would work.
Steeve
12-Oct-2010
[5270x2]
it could be simulated with a special mezz. A function which executes 
an indirect DO on one code block instead of building a function.
So that the code block could still be inspected by a debuging tool.
Maxim
12-Oct-2010
[5272]
hum... maybe a way to build a context when building a function, with 
the index of each member of the body block mapped out to its original 
source.
Steeve
12-Oct-2010
[5273]
yep it should work
Maxim
12-Oct-2010
[5274]
then the debugger could inspect the context instead.
BrianH
12-Oct-2010
[5275]
Right, and that kind of thing works now. But allowing a debugger 
to get past the protections just isn't going to happen. We don't 
have a way to know at runtime which person needs to be asked for 
permission to break past a protection like that. Since it certainly 
isn't the user.
Steeve
12-Oct-2010
[5276]
you will just have to furnish mezzs to replace the standard, func, 
funco and funct
Maxim
12-Oct-2010
[5277]
we could be able to do this by switching to a "debug" version of 
the various func creating mezz
BrianH
12-Oct-2010
[5278]
Yes, and replace those functions before the system is protected to 
support the reset.
Maxim
12-Oct-2010
[5279x2]
we could even make those functions able to trigger events based on 
"break points"  then listen on those events in a normal event loop.
so the debugger actually adds a line of code where the break should 
happen... then rebuilds the body block it executes when its called.
BrianH
12-Oct-2010
[5281]
They could even be trace events.
Maxim
12-Oct-2010
[5282]
since the external function isn't replaced, its transparent .
Gregg
12-Oct-2010
[5283]
Pekr - "if we can't have full fledged debugger, then we are crap 
:-)"

Agreed, though maybe not complete crap.


Brian - "Heck, even good old print statement debugging would work."

Agreed, to an extent.

Brian - "They could even be trace events."


Ahhh, joy. What can we learn from DTrace, and what should modern 
debugging look like? I have, at times, ached for the ability to step-trace 
and set break and watch points in REBOL. At the same time, I don't 
want to be myopic and focus on how we debugged in the past.


What are the best ways to debug the things we're supposed to build 
with REBOL? And can we hope for mechanisms to let us debug things 
outside what RT says REBOL is targeted at?
Maxim
12-Oct-2010
[5284]
using replacement function builders we could, in theory, completely 
control how execution occurs.  this would be at some speed cost and 
possibly not 100% transparent.


but setting break points and real-time value watching is definitely 
in the realms of possibility.
BrianH
12-Oct-2010
[5285x2]
I just don't want to preclude the use of R3 in the biggest industry: 
content delivery and presentation.
Or for that matter, any secure client systems. Most cryptographic 
security is based on secrets. If we can't keep secrets, we can't 
be used for those purposes.
Kaj
12-Oct-2010
[5287]
Other secure systems are debuggable
BrianH
12-Oct-2010
[5288]
As is R3, just using different methods. You might notice that DTrace 
doesn't allow you to read the iTunes process on OSX.
Kaj
12-Oct-2010
[5289]
Not everyone is on the board of Disney
BrianH
12-Oct-2010
[5290x2]
Secure systems can be debuggable. But security comes first.
Especially when there are other methods for debugging that don't 
require breaking security.
ChristianE
13-Oct-2010
[5292x2]
Are all the "^M"s below because of datatypes not implemented yet 
or is this a bug? I'd expected READ/STRING to not only TO STRING!, 
but to DELINE the data read.

>> sql: read/string clipboard://
== {create table scans (^M
               id     serial primary key,^M
               date   date not null,^M
               time   time(3) not null,^M
               job    integer not null, ^M
               branch integer, ^M
               ean    char(13) not null,^M
               box    integer^M
          )}
IIRC, READ at one point only returned the data read as a binary stream, 
forcing you to DELINE TO STRING! READ ... because of the transition 
to UTF-8, but /STRING was added back later. Found nothing in the 
change log, though.
Rebolek
13-Oct-2010
[5294]
How can I remove key form map! ?
Henrik
13-Oct-2010
[5295]
set it to none
Rebolek
13-Oct-2010
[5296]
Hm, it's easier than I though :) Thanks
Pekr
13-Oct-2010
[5297]
Any comment onto R3 now displaying security dialog each time it starts? 
Do we have some non-standard exe being generated by hostkit? This 
symptome is not happening with A99 IIRC ...
BrianH
13-Oct-2010
[5298]
The clipboard:// type returns a string without line ending conversion, 
at the moment. It hasn't been updated since before the /string refinement 
was added. It's a platform-specific bug.