but no
BMK> subscriber could post.
Just be careful about the perl6-all redirection. Don't allow registration
on both redirection lists.
Hmm, How would this work? Headers would be re-written? How would 'critical'
comments get to the -internals-design list?
--
Chaim Frenkel
m of things we have specific routines
DS> for.
(I'm no OO programmer) I can't wrap my mind around how one can extend a
OO hierarchy so that a low level (i.e. closer to the base class) can know
about a future type. (I once tried to work through the Smalltalk hierarchy
necessary? Why not a non-vtbl function that knows how
to add numeric types?
I would have wanted to limit the vtbl to self manipulation functions.
Set, get, convert, etc. Cross object operations would/should be
outside the realm of the object. (It seems like trying to lift yourself
by the bootstraps.)
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
;m more inclined to think of the structured data type as a layer
above the raw bits. I see the association of attributes with the underlying
data as an extra 'service'.
If for no other reason, there are many ways of having the attributes
distribute across, deletions, additions, and
tion.
Getting an efficient representation of a meaningful structure should
be done a new data type.
(I'm thinking of representing COBOL records/data, or even XML documents)
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
threaded code is so much slower; this can also be seen as
>> an indictment of threaded code).
JvV> Now I am really confused. This directly contradicts the Threaded Perl RFC.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
has to
be done or not. If there are some magic combinations of operations that
are done very regularly, a new word that does that combo could be provided.
If the representation doesn't allow for certain optimizations, the TIL is
not the optree, but rather the final executable form. The compiler co
don't see any practical restrictions at all.)
We may not even need to copy the body. If the header of the function
is target location, the header could any one of
nop,
nest another inner loop
lookup current symbol
fixup caller
or jump to
As the pieces were pulled off the disk, the next io
instruction ended up in the right place. Myth?)
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
ps could use relative addressing as not needing
relocation. But I'm not sure that all architectures support long enough
relative jumps/calls.
Doing the actual relocation should be quite fast. I believe that all
current executables have to be relocated upon loading.
>>>>> "AT" == Adam Turoff <[EMAIL PROTECTED]> writes:
AT> On Tue, Oct 24, 2000 at 10:55:29AM -0400, Chaim Frenkel wrote:
>> I don't see it.
>>
>> I would find it extremely akward to allow
>>
>> thread 1:*foo = \&o
.e. using pointers (or direct machine calls) to other
body of code made up of pointers or a real piece of code.
You seem to be thinking of threaded execution.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
ually
done, all threading is directly to the body of &foo. When the *foo
assignment is done,
copy the &foo body to a new location.
replace the old &foo body with an indirection
(I believe this is atomic.)
And optionally, the indirection could be to a fixup
rhaps if there were some dataflow
analysis some region of code) to use indirection?
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
>>>>> "DS" == Dan Sugalski <[EMAIL PROTECTED]> writes:
DS> At 01:50 PM 10/10/00 -0400, Chaim Frenkel wrote:
>> There is an intermediate method, have our own execution and data stack.
>> Basically build a TIL interpreter. This might be intermediat
ion, like:
DS>perl_call(perl_cv_ptr, 1, 2, 3);
DS> the bad bit about that is it means that calls to perl functions are
DS> different than calls to C functions, and I'm trying not to do that--I
DS> really do want to be able to get real f
ell, if having a dual-natured string/number is a win, then the first
time a string is used as a hash, the hash value could be saved.
But the biggest win would probably be compile time hash values.
Hmm,
my @values : forKeys = qw( );
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
@F = split;
TC> ...
TC> }
Interesting. I thought it was to make it more natural.
When splitting on whitespace, one is interested in the non-space tokens.
Effectively the leading and trailing whitespace isn't there.
--
Chaim Frenkel
this is the sentence );
$bar[0] eq "";
$bar[1] eq "this";
Currently $bar[0] eq "this";
If you think about it isn't removing leading fields, it's looking for the
first non-whitespace token on the li
y, this might be something useful at the user level. Many times
I do this
@record{@keys} = new_values();
Using a set of 'intern'ed strings might make it more efficient. And unless
we are able to note that @keys is always the same,the hashes would have to
keep getting recomputed. W
o the cached version.
eg.
/usr/local/perl/.../Posix.pm.1050:22 # George did this one
And this would be disabled under -T
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
we can always point at where the line starts, if it still
>> exists.
TC> Make it:
TC> Division by zero error on statement beginning at line xx
TC> Consider multiline constants -- where do you say the warning occurred?
TC> print < blah
TC> bl
pot they occur, even down to reporting the
DS> appropriate failure line in a multiline statement. We don't worry about
DS> bloat or slowdown, because the assumption is that -H is only used during
DS> debugging or when speed doesn't matter,
should have been honored. Or ...
Hmm, that might not be a bad idea at all. There was some talk about
reworking the command line.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
, then just rerun the job
and add a -T right at the front.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
yada.
No command line switches there. Only the #!.
If the subclued webmaster has perl in his cgi-bin directory, -T is
his least worry.
Hmm, or are you thinking of a shell script that's calling perl?
Then he has lots of holes to worry about.
--
Chaim Frenkel
guments, perl has to process them to
know how to interpret the script.
The only other mechanism that might be worthwhile would be for perl
to notice the -T and then give up and re-exec itself with an added
-T at the front of the line.
This would be workable as long as none of the -M
breach can be caused by not having
a -T?
The perl code is available to be read. So what can a perl program do
that the black hat couldn't by tweaking the code? The code is running
under the black hat's priviledges and uid.
--
Chaim Frenkel
voked
PRL> on the commandline, and runs a script that contains the
PRL> -T option on the #! line, Perl should just turn on
PRL> taint mode and not complain about it.
PRL> =head1 MIGRATION ISSUES
PRL> None.
--
Chaim Frenkel
ut keeping one of the original line numbers
would at least point at the correct expression.
The only movements that I can see are merges and reorgs. And we
can generate a reasonable association to get the users eyeball
to where it belongs.
--
Chaim Frenkel
nce between line numbers/files and op code
File cross-reference (might be just the %INC)
file#, filename
from, to, file#, line#
...
If the optimizer moves some opcodes around, it would slice and dice
the relevent offset records to keep tr
d work (waving hands violently) like this,
vtbl Integer
vtblFloat
vtblString
vtblDualNaturedVariable
etc.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
thread with bar
# create new thread with bar
while () {
push(@a, $workOrder);
}
}
Or for that matter, perhaps @a is file scoped?
:shared and my/our are orthogonal. One is cross-thread the other is
scoping.
--
Ch
re
sub recursive() { my $a :shared; ....; return recursive() }
would put $a or even which $a is meant, is left as an excersize
for someone brighter than me.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
>>>>> "AB" == Alan Burlison <[EMAIL PROTECTED]> writes:
AB> Chaim Frenkel wrote:
>> No scanning. I was considering that all variables on a store would
>> safe store the previous value in a thread specific holding area[*]. Then
>> upon a dea
ssiblity
of deadlocks with no notification.
Is deadlock detection really that expensive? The cost would be born by
the thread that will be going to sleep. Can't get lock, do the scan.
I really think we will have to do it. And we should come up with the
deadlock resolution. I don't thi
(Unless
you are going to simply let the threads sit in deadlock until a human
or watchdog timer kills the entire process)
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
of the interleaved
changes were done serially (one thread finishing before the other).
If this can not be done, then one or the other thread has to be notified
of deadlock and the relevant changes thrown away.
(As a former boss liked to say, "Work is conserved."
or perhaps TANSTAFL)
how they are
to be recovered from, What happens to the held locks, etc.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
>>>>> "AB" == Alan Burlison <[EMAIL PROTECTED]> writes:
AB> Chaim Frenkel wrote:
>> What tied scalar? All you can contain in an aggregate is a reference
>> to a tied scalar. The bucket in the aggregate is a regular bucket. No?
AB> So you don
>>>>> "AB" == Alan Burlison <[EMAIL PROTECTED]> writes:
AB> Chaim Frenkel wrote:
>> You aren't being clear here.
>>
>> fetch($a) fetch($a)
>> fetch($b) ...
>> add ...
>>
>>>>> "NI" == Nick Ing-Simmons <[EMAIL PROTECTED]> writes:
NI> Chaim Frenkel <[EMAIL PROTECTED]> writes:
NI> Well if you want to place that restriction on perl6 so be it but in perl5
NI> I can say
NI> tie $a[4],'Something';
That I
given me an atomic operation which is what I would like.
I think we all would agree that an op is atomic. +, op=, push, delete
exists, etc. Yes?
Then let's go on from there.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
ve been made.
Similarly, all of the locking and deadlocks here could be internal
to perl, and never visible to the user, so taking out a series of
locks, even if they do deadlock, perl can recover.
Again, this is probably too expensive and complex, but it isn't
something that is completely infeasible.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
)
in the current scope would turn of the auto-locking.
If this is still too much, would an attribute be acceptable?
my $a :shared, autolock;
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
e.
And different interpreters doesn't completely isolate threads from each
other. You are simply giving each thread its own work/scratch area.
With the internals rewrite it may not need to be a full interpreter.
There will still be quite a few items that need to be shared. But
definitely much
>>>>> "AB" == Alan Burlison <[EMAIL PROTECTED]> writes:
AB> Chaim Frenkel wrote:
>> The problem I have with this plan, is reconciling the fact that a
>> database update does all of this and more. And how to do it is a known
>> problem, its bee
ating either
TH> keys or values then that is a user visible behaviour change which
TH> potentially needs to be hideable in p52p6 translation.
I don't follow. Currently changing a value is perfectly permissible and
is visible immediately.
What is currently undefined is deleting
don't do that", or queued up until the iterator is done or
past the effected point.
I'm partial to the don't do that approach. It can easily be handled
at the user level.
delete @hash{@delete_these};
@hash{keys %add_these} = values %add_these;
(Hmm, push(%hash, %ad
t finishes.
Think ++$a(before int, after ++ value is bigint)
Some series of points (I can't remember what they are called in C)
where operations are consider to have completed will have to be
defined, between these points operations will have to be atomic.
--
Chaim Frenkel
rk at some point, run through the code, if the changes take,
we're ahead of the game. If something fails, back off to the checkpoint
and try the code again.
So any stretch of code with only operations on internal structures could
be made eligable for retries.
--
Chaim Frenkel
;-)
Why not
lock(%y);
foreach my $x (keys %y) {
$y{$x+1} = 1;
}
unlock(%y);
Hmm, I just realized, perhaps we can just punt. Any p5 program that
doesn't use Threads can be left alone. Using p5 threads would
then need manual intervention.
-
be
needed.
$a[++$b];
pop(@a);
push(@a, @b);
Will these?
And given that users will be doing the locking. What do you see for
handling deadlock detection and recovery/retry.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
gle 'statement', it may be possible to gather all the
objects needing a lock and then grabbing them in order (say by address).
Also the thread doesn't need to make any changes until all the locks are
available so a backoff algorithm may work.
This would k
oing transactions.
Though I don't think you would mind having
sub mycritical : lock { } # critical section here.
or
sub onlyone : method, lock { } # lock the object/class
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
>>>>> "GL" == Glenn Linderman <[EMAIL PROTECTED]> writes:
GL> Chaim Frenkel wrote:
>> ($foo, $baz, @bar) = (1,(2,3),4) # $foo = 1 $baz=2, @bar=(3,4)
>>
>> Actually, looking at it like that makes it an ugly situation. The 'new'
>&g
t need to (ie, vec() can
BS> just do a set_string and add an OVERLOAD for the bitwise
BS> ops).
But that's against the point. Nothing has to check. The only
operation that is called is the correct one.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
mmit. Or perhaps we get into versioning of variables and then we
buy problems of how to do rollbacks and retryies.
I don't think we can do this immediately. Can you come up with the right
API and/or hooks that are needed so that it might be retrofited?
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
thout user specifying a lock, perl will allow
a chaotic update pattern to be visible to the user?
thread Athread B
push(@foo, $bar); ++$bar;
or
$foo{$bar} = $baz; delete $foo{$bar++};
Will there be s
nd release it when
either finished, reset or destroyed.
Your mechanism, is more like a seek,read,tell sequence without any
guarentees between access.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
es locking.
SWM> - Internal structures, mallocs, and accesses are properly mutexed
I think we are still in mutual misunderstanding. I am only addressing
what the _user_ sees. Not what perl will do internally. I'm working
under the assumption that -internals will do whatev
> Sigh...if that's the best I can get, I'll take it.
I'm not the decisor here, I'm just pointing out another way to look
at the problem. I really don't think you want to have _all_ variable
actually visible. Even if they were, you will most likely have only
a limited number that you want visible.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
c. Two
different unrelated items, that are each individually properly
syncronized by perl, but the whole is wrong.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
difying the vtbl and filling
up the stack with the keys. I really am suspicious of replacing the
vtbl entry, there may be more than one thread working its way through
the hash.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
agree that all the rest is a user issue, is too short-sighted.
The job of perl is to make things easy, and the hard possible.
Single thingee access mediation, should be done automatically by perl.
The multi-thingee complex mediation should have the user step in, since
solving it (correctly and efficie
a reference.
my $a :shared;
my $b;
$a = \$b;
Otherwise what is the problem. In this case. Putting a reference into
a shared variable would wrap the reference.
Would this satisfy your needs?
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
I> is_equal in what sense? (String, Number, ...)
NI> and how is is_same different from just comparing addresses of the things?
Proxies? Wrappers?
The proxy might want to answer on behalf of the proxied.
--
Chaim Frenkel
fused. Who is doing adding?
Perl (aka the TIL) or one of the operands?
>> How does THIS figure out how to get THAT to give a usable value?
DS> That's what the type parameter's for...
You're back to a big switch!
Lost in a maze of subroutines that all look alike.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
IS figure out how to get THAT to give a usable value?
DS> logical_or
DS> logical_and
DS> logical_not
DS> bind (For =~)
DS> repeat (For x)
Are these so that operators can be overriden?
DS> Anyone got anything to add before I
>>>>> "KF" == Ken Fox <[EMAIL PROTECTED]> writes:
KF> Chaim Frenkel wrote:
>> You are now biting off quite a bit.
KF> What good is half a transaction? If transactions are to be useful,
KF> they should be fully supported -- including rolling bac
ediate code (parse tree or OP tree or whatever),
KF> then both "with" and "transation" might be implemented from user code
KF> outside the core.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
multiple variable variety. You will need to
able to have a group of variables be transaction protected.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
anism.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
ck, that if this is true for core. It
might be feasible for non-core modules (assuming some sort of registry)
so that an implicit use might be performed.
(I'm ignoring the problems of multiple versions or multiple conflicting
routines of the same name.)
Are we still far apart?
--
Ch
>>>>> "DS" == Dan Sugalski <[EMAIL PROTECTED]> writes:
DS> At 02:25 PM 8/24/00 -0400, Chaim Frenkel wrote:
>> But
>>
>> ($foo, $baz, @bar) = (1,(2,3),4) # $foo = 1 $baz=2, @bar=(3,4)
>>
>> Actually, looking at it like that makes
the stack.
So that push(@foo, @bar) would be an iterator (but since this is internal
special handling can be done. Whild the push(@foo, \@foo) would be the
normal single whatzit processing.
But then again, I'm probably missing something.
--
Chaim Frenkel
ectation would be to have it become
# $foo=1 $baz=2 @bar=(4)
*blech*, I'm glad that you're doing the thinking.
>>>>> "LW" == Larry Wall <[EMAIL PROTECTED]> writes:
LW> Chaim Frenkel writes:
LW> : LW> P.S. I thin
ar return an object ref in scalar
LW> context, as long as the object returned overloads itself to behave as
LW> arrays and hashes currently do in scalar context.
Isn't this an internals issue?
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
s.
Are there DBM's that don't understand nextkey?
Isn't this the another version of having an indirection? DBM's that
don't allow multiple iterators means the porter to the DBM has to
supply a wrapper that does.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
would be stored) that is the iterator
for (each %hash) {}
becomes
$hidden = iterator->new %hash
while ($_ = $hidden->next) {}
$hidden->done
or something.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
all <[EMAIL PROTECTED]> writes:
SWM> Does Perl6 support Symmetric MultiProcessing (SMP)?
SWM> This is a *huge* issue. It affects everything else that we do with
SWM> threads.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED]
p for grabs.
But if it participates then as far as the 'caller' or user is concerned
it looks like a variable and acts like a variable. It must be a variable.
>>>>> "d" == dLux <[EMAIL PROTECTED]> writes:
d> /--- On Thu, Aug 17, 2000 at 06:17:51PM
to flock() involving mutexes
DLN> and sending it to perl6-language?
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
re quite important in a database-enabled application.
PRL> Professional database systems have transaction-handling inside, but
PRL> there are only a few laguage out there, what supports transactions
PRL> in variable level.
--
Chaim Frenkel
will include or exclude them
based on the build requested.
>>>>> "MGS" == Michael G Schwern <[EMAIL PROTECTED]> writes:
MGS> On Sun, Aug 13, 2000 at 07:16:41PM -0400, Chaim Frenkel wrote:
>> What do you think of creating a mechanism for attaching pre
Err, when did this decision come about. I saw some discussion but I
didn't notice when it became final.
(I assume go, means be eliminated.)
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
>>>>> "RLS" == Randal L Schwartz <[EMAIL PROTECTED]> writes:
>>>>> "Chaim" == Chaim Frenkel <[EMAIL PROTECTED]> writes:
Chaim> Given N different fundemental types, we end up with NxN vtbl entries.
Chaim> A long time ago I lo
vaguely recall that at least one path, flipped the object
and the sender. Others did asFoo messages on the sender.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
les method dispatch.
Again operations on the object itself.
Cross operations, addition, concatination, etc. Are handled in the optree.
I can't see how objectA's vtbl can handle a cross-operation to objectB's
vtbl.
Enlightenment sought.
--
Chaim Frenkel
o distribute portable time and date calcuations, as
part of the core, we will have to live with whatever the system
libraries give us.
(I don't want to think about Leap Seconds just yet.)
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED]
loop.
This is with an inner loop. The dispatching could be sped up at the
cost of space by converting the pointers into real calls, and replacing
calls to push functions with real pushes.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
>>>>> "LW" == Larry Wall <[EMAIL PROTECTED]> writes:
LW> On the other hand, targeting JVM and IL.NET might keep us honest enough.
What is IL.NET?
--
Chaim FrenkelNonlinea
x27;t have to be machine code. A first pass for a port that does
the TIL inner loop in C, should be quite portable.
A faster port, that intimately understands the compiler and how to play
with it, can be done at lesiure.
--
Chaim Frenkel
kay, give. You obviously think it is bad. (I don't know what it is, but
what is bad about it.)
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
in handling the optree
between threads (and reducing sharing.)
A "parallel" structure to store those items that cover a range of
statements (or parts of an optree) should do it.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
form-independent naming scheme.
I'm not sure that it covers all the bases.
It covers the universe that web servers are designed to handle. But
what about the universe of devices. Or remote access to mounted
volumes? Sitting on a unix box, and getting to C: on a windows box?
I'll wait
planning to have a direct perl <-> os layer.
(A rewrite/stealing^wborrowing from sfio?)
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
resentation. If you are
JH> opening a file with open() or sysopen(), you supply a string with your
JH> native FS semantics and think no more of it.
What RFC? I couldn't find it on http://dev.perl.org/rfc/
Please explain why internally it needs to be represented as anything
o
:Generic "."
$resource->name = "new name with all other parts left alone";
$fh = open $resource->asNativeFormat()
Blech, but possible.
(Stolen parphrased but liberally from the Symbolics manual)
--
Chaim Frenkel
me"
,Type=>"txt"
,Version=> ":oldest"
);
Seems messy.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
1 - 100 of 154 matches
Mail list logo