couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Paul Joseph Davis (Commented) (JIRA)" <>
Subject [jira] [Commented] (COUCHDB-1397) Function expressions, evals in SpiderMonkey
Date Fri, 03 Feb 2012 12:51:53 GMT


Paul Joseph Davis commented on COUCHDB-1397:


Of course I'd look at a patch if you have one. Though as I've mentioned before, anything that
relies on parsing JavaScript or other source-to-source transforms is going to be heavily discouraged.
Also, while I understand that this will change things from the old method, I'm not overly
swayed by the relaxing arguments here. Fact of the matter is that this is invalid JavaScript,
so regardless of what we do, it should at least be valid JavaScript. (And jslint and other
command line tools would finally start working as well).

@Jason, @Max, @James

I tried doing some hacky shortcuts to account for this. Specifically, "(" + map_source + ")"
because the "error" is literally "anonymous function at top level scope" or some such and
the parens make it kosher. But this ends up breaking all of the code that looks like "var
f = 1; function(doc) {emit(doc._id, f);};" which is a noticeable amount of JavaScript.

@Jason, @Max, @James

I did just think of an alternative solution which would be to make the new version use scripts
instead of functions. The resulting syntax would be something like:

"var doc = next_doc(); emit(doc._id, null)"

Which would then just be executed once for every doc. Though going this route, we'd need some
sort of context for the functions so people could precompile their CommonJS libs and the like.
> Function expressions, evals in SpiderMonkey
> -------------------------------------------
>                 Key: COUCHDB-1397
>                 URL:
>             Project: CouchDB
>          Issue Type: Bug
>          Components: JavaScript View Server
>    Affects Versions: 1.2.1
>         Environment: All
>            Reporter: Jason Smith
> New SpiderMonkey releases do not eval() a sole anonymous function expression. That is
not a valid JavaScript statement, and so it is not a valid JavaScript script.
> COUCHDB-1302 addressed this for 1.1 and the 1.1.x branch. This ticket is for 1.2. (Sorry
to spam COUCHDB-1302. I saw "Unassigned" and read "Unresolved.")

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:!default.jspa
For more information on JIRA, see:


View raw message