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

World: r3wp

[Core] Discuss core issues

Steeve
20-Jan-2010
[15510]
I am more in favor of finding a short name, it's a very common idiom.
ChristianE
20-Jan-2010
[15511]
Yeah, it is a common idiom. But some symmetry to REMOVE FIND FLAGS 
FLAG would be nice, and I don't expect Carl or anyone to be willing 
to replace REMOVE FIND by another native or mezzanine. That wouldn't 
be worth it.

For now, I've decided to go with 

	>> union package/changes [weight]
	>> exclude package/changes [address]

since speed is really nothing to worry about in my case now.
Gregg
21-Jan-2010
[15512x2]
I thought ALTER was going to go away in R3, because nobody uses it. 


As an example of a func that operates conditionally, it's nice, but 
I can't remember ever *needing* it.
I would still like to set up metrics to see what funcs are used most, 
for both development and production (i.e. profiling), and set up 
a rating system. There have been some ad hoc analyzers in the past, 
but no reference system.

Yes, Graham, I know. I should just do it. :-)
Graham
21-Jan-2010
[15514]
I wasn't going to say anything ...  my interest in r3 development 
is rapidly waning ...
Pekr
21-Jan-2010
[15515]
Graham - we should stick it into REBOL3 channels and post to Carl 
via all possible channels. R3 "developments" once again completly 
sucks...
Graham
21-Jan-2010
[15516]
The lack of carry thru from Carl just totally sucks ... and is extremely 
disincentivizing
Henrik
21-Jan-2010
[15517]
Carl posted a bug in curecode today, so I guess he's back to R3 coding.
Janko
21-Jan-2010
[15518x2]
---

ok.. moving here from !REBOL3 talking about a sandoxed execution 
option and option to somehow separate native Rebol pure and unpure 
functions
for example you know join will just "calculate" result and you can't 
screw up anything existing with it... where append can , or set can 
even more
Graham
21-Jan-2010
[15520x2]
well, you can scan the incoming function and disallow 'set
or create a safe dialect that looks like rebol ...
Janko
21-Jan-2010
[15522x2]
I will give another example where I claim doing a dialect for it 
all is useless option. So you have a rebol server that holds a big 
block of users in ram you send it 2 functions a filter >> function 
[ U ] [ all [ greater? U/age 20 lesser U/age 30 equal? U/gender 'female 
] << and a mapping function >> function [ U ] [ uppercase rejoin 
[ U/name " " U/surname ] ] << server will accept the code and collect 
items where first returns true then process them vith mapping function 
join them with reducing >> function [ U ACC ] [ rejoin [ ACC ", " 
U ]<<  function and return the result.
- the point here being that all functions used rejoin greater? equal? 
lesser? uppercase? are pure functions and can't screw up anything 
whatsoever

- second point is that to do this via dialect you would have to recreate 
whole rebol in rebol which is very very suboptimal (why do we have 
an interpreted lang then??)

- so if you could sandbox execution of functions , for example by 
only allowing pure rebol functions this would be solved
Graham
21-Jan-2010
[15524]
No you don't ... only one person has to do it and shares it with 
everyone else.  Thank you very much.
BrianH
21-Jan-2010
[15525]
You can't really sandbox R2, but R3 was designed with that in mind 
so it should be easier.
Janko
21-Jan-2010
[15526x3]
somehow specifying pure functions or limiting their side effects 
is not only good for security but for writing more bug free code. 
If I could say, raise an error if this function that I wrote to just 
calculate something does anything else would be good for writing 
less bugs.
BrianH: yes, I am throwing this into discussion for R3 ..
Graham: I don't know what you meant with that scentence. If I came 
out as arrogant or attacking you in my writing above, I can say I 
*really* didn't mean it. I am just trying to get my message accross, 
which I am not so good at since english is not my native lang, it's 
1:25 in the night here and I am a little nerwous since I told someone 
I will finish something before tomorrow and I am chatting here instead 
of doing it :)
BrianH
21-Jan-2010
[15529x2]
You don't have to limit to pure functions if you limit access to 
data. Even modifying functions are OK if they only work on legit 
data.
That's the difference between sandboxing and going side-effect-free.
Janko
21-Jan-2010
[15531x2]
yes, that would be even 10x better :) if runtime could wrap something 
and not allow it mess anything whaterver it calls!
so you are saying something like this could be possible in R3.. well 
you have my and Sunanda's vote for that :) (we talked in !REBOL3 
earlyer)
Graham
21-Jan-2010
[15533]
I'm saying that if you create a safe dialect that people can use 
for sending functions across the network in r2 .. well, great ... 
we can all use it.
Janko
21-Jan-2010
[15534x2]
aha, but wouldn't that be recreating rebol in rebol. and chance is 
that that rebol will behave a little different than normal rebol 
in some edge cases
I understand you otherwise, if runtime doesn't allow 100% safe execution 
then this is the only way, I am just saying it would be cool if it 
would allow it
BrianH
21-Jan-2010
[15536]
Well, in R3 we don't have pointers or pointer arithmetic, you can't 
just reference arbitrary memory, all data has to be either literal 
or returned from a function. Words aren't bound by default, they 
are bound by the LOAD and DO mezzanine code, which can easily be 
replaced for your sandboxed code. The code can run in an isolated 
module with careful control of its imports.
Graham
21-Jan-2010
[15537x3]
I'd like users to construct their own sql as well and send it to 
the server ... but I don't
If I new enough about sql .. I could scan their query and check for 
safety
new = knew
BrianH
21-Jan-2010
[15540]
We also have execution limits in R3 (which will be improved). There 
are no such limits in R2, so your sandboxed dialect would need to 
be staticly determinable if you want to avoid endless loops.
Graham
21-Jan-2010
[15541x2]
There's a web demo of R3 ... .
I think he checks for execution time before killing endless loops 
...
BrianH
21-Jan-2010
[15543]
A sandboxed dialect in R2 would be slower because of the overloaded 
ordinals.
Janko
21-Jan-2010
[15544]
sql can't redefine itself so you could with analysis somewhat surelly 
test if select is really just select, but there are some border cases 
with string escaping specific to certain databases that's why it's 
really hard to prevent sql injections manually (or so they say)
BrianH
21-Jan-2010
[15545]
You would have to replace them with mezzanine code.
Janko
21-Jan-2010
[15546]
BrianH: yes, I saw that .. that is very nice also in such cases
BrianH
21-Jan-2010
[15547]
2.7.7 would be easier to sandbox since R2/Forward did half the work.
Janko
21-Jan-2010
[15548x2]
Maybe something related .. why google is using Lua : 

http://google-opensource.blogspot.com/2010/01/love-for-luajit.html
http://article.gmane.org/gmane.comp.lang.lua.general/62321

>>Our Lua usage isn't too widespread at the moment; it's really one
infrastructure project in particular that uses Lua to allow

user-defined functions to run within a tightly controlled container.

Lua was the best choice, because of its low overhead, fast execution,
and the ability to set limits on execution time.<<
hm.. basically I see now where my inspiration came from to finally 
started nagging about this today :))
BrianH
21-Jan-2010
[15550]
Lua was designed as an extension language, not a general-purpose 
language.
Janko
21-Jan-2010
[15551x3]
basically they mention exactly what we are talking about now. also 
about what you mention "execution limits"
yes, I know.. but those abilities only make it stronger not weaker 
at the end (it also has some form of sandboxing it seems):
http://lua-users.org/wiki/SandBoxes
the fact that R3 will be embeddable inside c apps is a HUGE plus 
in my view too
BrianH
21-Jan-2010
[15554]
They make it stronger at a different field of endeavor. We can borrow 
ideas from Lua for those occasions where we are performing Lua-like 
tasks, especially to make extension language dialects.
Janko
21-Jan-2010
[15555]
I embedded lua and nekovm when I was working at some game to make 
levels scriptable instead of data driven. It was really nice way 
to make games, and if I could I would much rather use rebol. rebol 
is the data and dialect language which is main point of embedding 
dynamic languages in the first place
BrianH
21-Jan-2010
[15556]
And these embedded dialects could even resemble a subset of the DO 
dialect.
Janko
21-Jan-2010
[15557x3]
I really like lua, I would most probably be using it if it weren't 
for rebol which still have even more reasons to use it
cool
BrianH: while I have you here :)) .. is there any chance to have 
a curry word in rebol 


>> format-money "$" 10000 "" "," "." ; args are: before number after 
1000-separator dec-separator
>> format-money "$" 4500 "" "," "." 

>> my-format: curry format-money [ "$" _ "" "," "." ]
>> my-format 10000
>> my-format 4500