On Thu, Jul 11, 2013 at 5:08 PM, Brendan Eich bren...@mozilla.com wrote:
Very messy, and primordial JS (the Mocha interpreter) violated ECMA-262
Edition 1 on order of evaluation, e.g., o[x] = ++x where the RHS ++x must be
evaluated *after* the Reference o[x] is evaluated. Fixing this prior to
I like the idea, maybe we could do the following:
foo(posArg1, posArg2, name1: x, name2: y)
as syntactic sugar for:
foo(posArg1, posArg2, { name1: x, name2: y })
Axel
On Jul 12, 2013, at 6:22 , Andrew Fedoniouk n...@terrainformatica.com wrote:
Quite often I see constructions like
On Fri, Jul 12, 2013 at 12:22 AM, Andrew Fedoniouk
n...@terrainformatica.com wrote:
Quite often I see constructions like this:
foo({one:1,two:2});
so call of function with single parameter - object literal.
Idiom named Poor man named arguments passing
Idea is to extend existing JS/ES
On Fri, Jul 12, 2013 at 12:22 AM, Andrew Fedoniouk
n...@terrainformatica.com wrote:
Quite often I see constructions like this:
foo({one:1,two:2});
so call of function with single parameter - object literal.
Idiom named Poor man named arguments passing
Idea is to extend existing JS/ES
A slightly less ambitious suggestion:
consider f() as syntax for the implicit arguments array
(which, as of ES6, can be considered deprecated), then
make the parens in this syntax optional
In other words, you could write
f 1 // single parameter
f(1,2)// single parameter,
In general, generators are very hard to polyfill. (Not impossible, as
you can do a CPS transform of the source code, but very difficult.)
It depends on what you want. For concise specification of iteration,
you can do something without full CPS transform, by using monadic
coding style. My
On Jul 11, 2013, at 9:01 PM, Luke Hoban wrote:
Two questions on new Number APIs:
1) Is it intentional that clz is on Number.prototype instead of Number? Why?
Generally, operations that operate upon a value of a specific type are
expressed as instance methods. We see this all the time
From: Allen Wirfs-Brock [mailto:al...@wirfs-brock.com]
On Jul 11, 2013, at 9:01 PM, Luke Hoban wrote:
Two questions on new Number APIs:
1) Is it intentional that clz is on Number.prototype instead of Number? Why?
I think there is a stronger case to me made for Math.clz(number).
On Fri, Jul 12, 2013 at 8:58 AM, Luke Hoban lu...@microsoft.com wrote:
From: Allen Wirfs-Brock [mailto:al...@wirfs-brock.com]
On Jul 11, 2013, at 9:01 PM, Luke Hoban wrote:
Two questions on new Number APIs:
1) Is it intentional that clz is on Number.prototype instead of Number?
Why?
On Fri, Jul 12, 2013 at 11:07 AM, Claus Reinke claus.rei...@talk21.comwrote:
A slightly less ambitious suggestion:
consider f() as syntax for the implicit arguments array
(which, as of ES6, can be considered deprecated), then
make the parens in this syntax optional
snip
In
function f(a, b) {
return [a, b];
}
Currently:
f(1, 2); // [1, 2]
Whereas...
// single parameter, implicit arguments pseudo-array:
f(1, 2);
|a| would be magically be treated like a ...rest param that wasn't really
an array, but instead a implicit arguments pseudo-array?
// [[1, 2],
On Jul 11, 2013, at 9:33 PM, Mark S. Miller wrote:
Yes, that was intentional. Even though the __proto__: looks related to the
__proto__ property initially on Object.prototype, that's only cosmetic. It
is now simply part of the object literal syntax, in just the same way that
| used to
The TypeScript project tries to emulate arrow functions through the
_this = this pattern and keeps running into corner cases where a
semi-naïve renaming is not sufficient.
I have been trying to suggest using .bind to emulate arrow functions
instead, but the counter-arguments are (a) .bind might
On Jul 12, 2013, at 9:01 AM, Mark Miller wrote:
On Fri, Jul 12, 2013 at 8:58 AM, Luke Hoban lu...@microsoft.com wrote:
From: Allen Wirfs-Brock [mailto:al...@wirfs-brock.com]
2) Is it intentional that Number.toInteger(Infinity) returns true?
Huh? How's that?
Number.toInteger
you might consider ticketing performance bugs against the various
implementations.
Allen
On Jul 10, 2013, at 9:16 AM, Claus Reinke wrote:
The TypeScript project tries to emulate arrow functions through the
_this = this pattern and keeps running into corner cases where a
semi-naïve renaming
With the availability of constants and Symbols you could easily create what
SHOULD be a memory efficient event library.
On Thu, Jul 11, 2013 at 3:04 PM, Andrea Giammarchi
andrea.giammar...@gmail.com wrote:
trivial like ... 2 weak maps + a set for a single event ?
```javascript
obj.on(evt,
On Jul 12, 2013, at 8:58 AM, Luke Hoban lu...@microsoft.com wrote:
From: Allen Wirfs-Brock [mailto:al...@wirfs-brock.com]
On Jul 11, 2013, at 9:01 PM, Luke Hoban wrote:
Two questions on new Number APIs:
1) Is it intentional that clz is on Number.prototype instead of Number?
Why?
On Fri, Jul 12, 2013 at 10:19 AM, Mark S. Miller erig...@google.com wrote:
No. Even if toInteger meant no fractional component, I would still expect
it only to return true if there is some specific mathematical integer that
the JS number can be said to exactly represent. For the same reason, I
I think we all know that's extremely slow and since ever.
I always wondered the reason too ... in jsperf there are tons of tests
about this, here yet another one just quickly created to compare the gap:
http://jsperf.com/bind-is-slow
in Chrome, bind(context) without even arguments is 87% slower
On Fri, Jul 12, 2013 at 6:45 AM, Rick Waldron waldron.r...@gmail.com wrote:
On Fri, Jul 12, 2013 at 12:22 AM, Andrew Fedoniouk
n...@terrainformatica.com wrote:
Quite often I see constructions like this:
foo({one:1,two:2});
so call of function with single parameter - object literal.
On Jul 12, 2013, at 10:19 AM, Mark S. Miller erig...@google.com wrote:
No. Even if toInteger meant no fractional component, I would still expect
it only to return true if there is some specific mathematical integer that
the JS number can be said to exactly represent. For the same reason, I
I wonder if there is any interest/plan/scheduled TC39 slot about JS Ctypes,
mentioned by [Brendan Eich in his famous TXJS talk](
https://brendaneich.com/2011/08/my-txjs-talk-twitter-remix/) but never
again discussed in this ml.
Seeing `asm.js` passing through all usual procedures before `JS
On Jul 12, 2013, at 10:09 AM, Mark S. Miller erig...@google.com wrote:
If you can manage it, most effective would be to get .bind (or any other
operation you want to be faster) into some widely quoted benchmark suite.
In WebKit at least, we have a thing called JSRegress which is meant to
On Jul 12, 2013, at 10:27 AM, Tab Atkins Jr. wrote:
On Fri, Jul 12, 2013 at 10:19 AM, Mark S. Miller erig...@google.com wrote:
No. Even if toInteger meant no fractional component, I would still expect
it only to return true if there is some specific mathematical integer that
the JS number
Andrew Fedoniouk wrote:
So that can be compiled to stack machine strictly in order
it is defined.
Or do you mean something else here?
You're right, that case can be handled, but the for loops and the
left-hand side revisions remain.
/be
___
Just to clarify, JSRegress is not a benchmark in the sunspider/kraken/etc
sense, as the tests tend far more towards microbenchmarks than full real
programme tests. As the name suggests its main purpose is to help us make sure
we're not regressing core language primitives.
--Oliver
On Jul 12,
Allen Wirfs-Brock wrote:
you might consider ticketing performance bugs against the various
implementations.
Right, and at most summarize with links to those issues for es-discuss.
This is not a language issue, rather a quality of implementation one.
/be
Allen
On Jul 10, 2013, at 9:16
On Fri, Jul 12, 2013 at 10:48 AM, Allen Wirfs-Brock
al...@wirfs-brock.com wrote:
On Jul 12, 2013, at 10:27 AM, Tab Atkins Jr. wrote:
On Fri, Jul 12, 2013 at 10:19 AM, Mark S. Miller erig...@google.com wrote:
No. Even if toInteger meant no fractional component, I would still expect
it only to
JSCTypes is unsafe, it won't be standardized and we restrict access to
Firefox add-ons and chrome (privileged UX implementation) code.
Binary data and value objects cover the fast typed structs/primitives.
Unsafe FFI is a different issue and should not be mixed up with structs
and
Brendan Eich wrote:
Andrew Fedoniouk wrote:
So that can be compiled to stack machine strictly in order
it is defined.
Or do you mean something else here?
You're right, that case can be handled, but the for loops and the
left-hand side revisions remain.
Sorry, callee revisions.
Depending
python has ctypes and is widely used, having something similar in JS would
have been awesome too, didn't know it was unsafe.
Is that because of the proposal or because JS is not suitable for user
managed structs?
Thanks
On Fri, Jul 12, 2013 at 11:01 AM, Brendan Eich bren...@mozilla.com wrote:
On Fri, Jul 12, 2013 at 7:02 AM, Rick Waldron waldron.r...@gmail.com wrote:
On Fri, Jul 12, 2013 at 12:22 AM, Andrew Fedoniouk
n...@terrainformatica.com wrote:
Quite often I see constructions like this:
foo({one:1,two:2});
so call of function with single parameter - object literal.
On Fri, Jul 12, 2013 at 11:22 AM, Oliver Hunt oli...@apple.com wrote:
Python isn't use to run arbitrary untrusted code, from untrusted websites.
neither is node ... but actually, not even JS ... it could, of course, so
could Python evaluate random generated code if needed.
In few words I've
On Thu, Jul 11, 2013 at 9:22 PM, Andrew Fedoniouk
n...@terrainformatica.com wrote:
Quite often I see constructions like this:
foo({one:1,two:2});
so call of function with single parameter - object literal.
Idiom named Poor man named arguments passing
Idea is to extend existing JS/ES
Python isn't use to run arbitrary untrusted code, from untrusted websites.
The reality is that we thinking about features you want in ES, it's not enough
for another language to have the feature, you have to ask yourself whether the
other language is primarily used for untrusted code.
--Oliver
On Fri, Jul 12, 2013 at 11:20 AM, Tab Atkins Jr. jackalm...@gmail.com wrote:
On Thu, Jul 11, 2013 at 9:22 PM, Andrew Fedoniouk
n...@terrainformatica.com wrote:
Quite often I see constructions like this:
foo({one:1,two:2});
so call of function with single parameter - object literal.
Idiom
In brief: allow Symbol's to be constructed with a single parameter, with
the following behavior:
var obj = {};
undefined
new Symbol({}) === new Symbol({})
false
new Symbol(obj) === new Symbol(obj)
true
Motivation: the ability to construct equal Symbols gives us the necessary
building blocks
On Jul 12, 2013, at 12:14 PM, Jeremy Martin wrote:
In brief: allow Symbol's to be constructed with a single parameter, with the
following behavior:
var obj = {};
undefined
new Symbol({}) === new Symbol({})
false
new Symbol(obj) === new Symbol(obj)
true
You can use a WeakMap to
Good point, that's definitely a usable solution (also a better
representation of what I was attempting to describe).
I'd still be interested in a less-verbose/more-efficient approach using the
Symbol constructor, but it may not be a common enough scenario to justify
it when a workaround does
I've had some back and forth with v8 devs about this since it affects my
compiler. I believe they already have open issues about it but I don't know
the bug #s.
In general, the problem seems to be that Function.bind creates functions
that have different type information from normal functions you
I would welcome (with fanfare and parades) a new Symbol(obj) that worked
for strings and integers. Such is not possible using the WeakMap shim
(you'd have to detect the type of the value and have multiple dictionaries,
or something, and you'd leak the symbols forever...)
Of course, what that
My expectation would be that...
(a === b) === (new Symbol(a) === new Symbol(b))
I.e., `new Symbol(a) === new Symbol(b)` iff `a === b`. This satisfies the
strings/integers scenario, but, of course, fails your WeakMap garbage
collection semantics. You need WeakSymbolMaps (+ this proposal) :)
On
for JS Ctypes I meant binary data, as written in the Brendan link I've
posted at the beginning, and the part I've played a while ago:
http://webreflection.blogspot.com/2011/09/introduction-to-js-ctypes.html
It looks like that part, the binary data, and structs, will be in ES6 so
... good news,
In the future wouldn't using a Function Proxy be potentially much faster?
On Fri, Jul 12, 2013 at 1:12 PM, K. Gadd k...@luminance.org wrote:
I've had some back and forth with v8 devs about this since it affects my
compiler. I believe they already have open issues about it but I don't know
On Fri, Jul 12, 2013 at 1:42 PM, Andrew Fedoniouk n...@terrainformatica.com
wrote:
On Fri, Jul 12, 2013 at 6:45 AM, Rick Waldron waldron.r...@gmail.com
wrote:
On Fri, Jul 12, 2013 at 12:22 AM, Andrew Fedoniouk
n...@terrainformatica.com wrote:
Quite often I see constructions like
On Fri, Jul 12, 2013 at 2:08 PM, Andrew Fedoniouk n...@terrainformatica.com
wrote:
On Fri, Jul 12, 2013 at 7:02 AM, Rick Waldron waldron.r...@gmail.com
wrote:
On Fri, Jul 12, 2013 at 12:22 AM, Andrew Fedoniouk
n...@terrainformatica.com wrote:
Quite often I see constructions like
Thanks, kg! Your message represents the kind of discussion/information
I was hoping for. If your hunch as to the reason is correct, it would seem
an easy target for optimization. Partially and efficiently emulating arrow
functions in ES6 transpilers should be a strong argument in favor, though
On Jul 12, 2013, at 1:48 PM, Mark S. Miller wrote:
On Fri, Jul 12, 2013 at 11:00 AM, Tab Atkins Jr. jackalm...@gmail.com wrote:
On Fri, Jul 12, 2013 at 10:48 AM, Allen Wirfs-Brock
al...@wirfs-brock.com wrote:
In other words you want to define Number.isInteger to return true only if
On Jul 12, 2013, at 1:55 PM, Matthew Robb wrote:
In the future wouldn't using a Function Proxy be potentially much faster?
It seems highly unlikely that any use of Proxy will be faster than a rough
equivalent using an ordinary object.
I expect proxies to be much harder for implementations to
On 07/12/2013 10:27 AM, Tab Atkins Jr. wrote:
And, because of what we discussed in the recent thread...
Number.isInteger(Math.pow(2,53)-1) == true
Number.isInteger(Math.pow(2,53)) == false
I need to comment in the other thread again and push back against what people
have said there, but
On Fri, Jul 12, 2013 at 2:06 PM, Rick Waldron waldron.r...@gmail.com wrote:
On Fri, Jul 12, 2013 at 1:42 PM, Andrew Fedoniouk
n...@terrainformatica.com wrote:
...
This construction
foo {};
is an equivalent of:
foo({});
but not
foo();
Right, I get that... but what I'm
On Jul 12, 2013, at 3:54 PM, Jeff Walden wrote:
On 07/12/2013 10:27 AM, Tab Atkins Jr. wrote:
And, because of what we discussed in the recent thread...
Number.isInteger(Math.pow(2,53)-1) == true
Number.isInteger(Math.pow(2,53)) == false
I need to comment in the other thread again and
If a function proxy is just forwarding an operation through an intermediary
(the proxy and it's call trap) to another function it sounds very similar
to a regularly wrapped/bound js function. So what I am saying is if
browsers implemented bind using a proxy instead of the special native
functions
On 07/09/2013 06:49 PM, Mark S. Miller wrote:
Because Nat includes 2**53, this code actually fails to enforce conservation
of currency!!
The problem isn't that Nat includes 2**53. It's that you're performing an
operation that may compute an inexact value, then you're treating that inexact
On Fri, Jul 12, 2013 at 4:07 PM, Jeff Walden jwalden...@mit.edu wrote:
On 07/09/2013 06:49 PM, Mark S. Miller wrote:
Because Nat includes 2**53, this code actually fails to enforce conservation
of currency!!
The problem isn't that Nat includes 2**53. It's that you're performing an
On Fri, Jul 12, 2013 at 3:54 PM, Jeff Walden jwalden...@mit.edu wrote:
On 07/12/2013 10:27 AM, Tab Atkins Jr. wrote:
And, because of what we discussed in the recent thread...
Number.isInteger(Math.pow(2,53)-1) == true
Number.isInteger(Math.pow(2,53)) == false
I need to comment in the other
On 07/12/2013 04:03 PM, Allen Wirfs-Brock wrote:
are you suggesting that if we want such an function, it should be named
something else, such as isExactInteger, isPreciseInteger,
isUnambiguousInteger, etc?
Possibly, but I don't think so. Whether a value is exact or precise is a
function
On Fri, Jul 12, 2013 at 3:55 PM, Andrew Fedoniouk
n...@terrainformatica.com wrote:
Seems like I am not getting that famous ASI thing.
I do not understand why here:
foo
(exp);
there is no semicolon injected. It rather should be this:
foo;
(exp);
if that ASI thing has any traces
On 07/12/2013 04:13 PM, Tab Atkins Jr. wrote:
If you don't agree with that reasoning, then I suppose you'd argue
that *all* numbers 2^53 should return true, since they're all forced
into being represented as integers?
All numbers = 2**53 except Infinity, yes. I think isInteger implies the
On 07/12/2013 04:09 PM, Tab Atkins Jr. wrote:
Mark's Nat() function *does* throw if the input isn't an
exactly-representable number.
Yes. I'm arguing that's not helpful when you can compute an
exactly-representable number, that is the result of an inexact calculation,
like |Math.pow(2, 53) +
On Jul 12, 2013, at 4:18 PM, Jeff Walden wrote:
On 07/12/2013 04:03 PM, Allen Wirfs-Brock wrote:
are you suggesting that if we want such an function, it should be named
something else, such as isExactInteger, isPreciseInteger,
isUnambiguousInteger, etc?
Possibly, but I don't think so.
On 13/07/2013, at 01:24, Jeff Walden wrote:
On 07/12/2013 04:13 PM, Tab Atkins Jr. wrote:
If you don't agree with that reasoning, then I suppose you'd argue
that *all* numbers 2^53 should return true, since they're all forced
into being represented as integers?
All numbers = 2**53 except
On 07/12/2013 04:32 PM, Allen Wirfs-Brock wrote:
So the other thread was a discussion concerning the appropriate value of
Number.MAX_INTEGER. Do you think it should be 2^53-1, or 2^53, or the same
thing as Math..MAX_VALUE.
Number.MAX_INTEGER should be 2**53. People who want 2**53 - 1 (and
On Jul 12, 2013, at 4:39 PM, Jeff Walden wrote:
On 07/12/2013 04:32 PM, Allen Wirfs-Brock wrote:
So the other thread was a discussion concerning the appropriate value of
Number.MAX_INTEGER. Do you think it should be 2^53-1, or 2^53, or the same
thing as Math..MAX_VALUE.
just to add some extra info to this discussion, lo-dash does some crazy
thing to optimize at its best bound functions.
`/\bthis\b/.test(Function.prototype.toString.call(callback))` or something
similar to check if the function needs to use call/apply at all, together
with the number of arguments,
one more thing ... I believe this will impact arrow function too since is
basically bound callbacks all over the place (or at least this is how I
believe it will be transpiled)
On Fri, Jul 12, 2013 at 4:57 PM, Andrea Giammarchi
andrea.giammar...@gmail.com wrote:
just to add some extra info to
On 07/12/2013 04:56 PM, Allen Wirfs-Brock wrote:
So you seem to be saying that that
Number.isInteger(MAX_VALUE) should be true, but that Number.MAX_VALUE
Number.MAX_INTEGER is also true because for isInteger you using the
mathematical definition of Integer but for MAX_INTEGER you are
On Fri, Jul 12, 2013 at 4:17 PM, Tab Atkins Jr. jackalm...@gmail.com wrote:
On Fri, Jul 12, 2013 at 3:55 PM, Andrew Fedoniouk
n...@terrainformatica.com wrote:
Seems like I am not getting that famous ASI thing.
I do not understand why here:
foo
(exp);
there is no semicolon injected.
On 07/12/2013 04:53 PM, Mark S. Miller wrote:
I would like a better API -- both less likely to be used unsafely and no
harder (or not much harder) to use safely. Suggestions?
In C++ you'd want MS's SafeInt, or WTF's CheckedInt, with operator overloading
and all that jazz. Without operator
While I sympathize with the desire to make integer mean mathematical
integer, I don't think it's going to work out very well. Nobody actually cares
about such functions, and you of course have the WATs of
```js
Number.isInteger(9007199254740992.5) === true
```
since the runtime couldn't
On Jul 12, 2013, at 5:09 PM, Andrew Fedoniouk wrote:
Your hypothesis would be true if not this case:
return
{ a:1 };
Why it injects ';' after the return? This
Because, the actual ECMAScript grammar says a new line can't occur between the
'return' keyword and the optional return
On 07/12/2013 06:17 PM, Tab Atkins Jr. wrote:
On Fri, Jul 12, 2013 at 5:15 PM, Domenic Denicola
dome...@domenicdenicola.com wrote:
While I sympathize with the desire to make integer mean mathematical
integer, I don't think it's going to work out very well. Nobody actually
cares about such
On Fri, Jul 12, 2013 at 6:39 PM, Jeff Walden jwalden...@mit.edu wrote:
On 07/12/2013 06:17 PM, Tab Atkins Jr. wrote:
On Fri, Jul 12, 2013 at 5:15 PM, Domenic Denicola
dome...@domenicdenicola.com wrote:
While I sympathize with the desire to make integer mean mathematical
integer, I don't
From: Tab Atkins Jr. [mailto:jackalm...@gmail.com]
Exactly, which is why we can only *accurately* answer for numbers = 2^53-1.
Probably a horrible idea in practice, but I feel like the correct answer here
is `throw`ing outside that range. It's like asking is Tab's second head blonde
or
74 matches
Mail list logo