couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Caolan McMahon (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (COUCHDB-1075) Circular require's in CommonJS modules
Date Thu, 05 May 2011 15:49:04 GMT

    [ https://issues.apache.org/jira/browse/COUCHDB-1075?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13029389#comment-13029389
] 

Caolan McMahon commented on COUCHDB-1075:
-----------------------------------------

1. I didn't want to replace the source of the module with a function and loose that information,
so I tried adding a compiled property to the string (the same approach used in mikeal's patch:
https://issues.apache.org/jira/browse/COUCHDB-890) but because strings are not passed around
by reference, you can't extend the string object on the design doc with a new property easily...
in fact I don't think that patch even works. Adding a _module_cache property seemed like the
simplest way to store compiled modules without restructuring lots of code without much test
coverage (and it lead me to fixing errors in the ways module ids are defined and module resolution
works).

2. Circular dependencies are handled like this in every other environment I can think of.
In fact node.js does exactly the same... but you'll see similar behaviour from Python and
others. I think developers will expect CouchDB to behave in the same way.

Thanks again for the feedback Alexander :)

> Circular require's in CommonJS modules
> --------------------------------------
>
>                 Key: COUCHDB-1075
>                 URL: https://issues.apache.org/jira/browse/COUCHDB-1075
>             Project: CouchDB
>          Issue Type: Bug
>          Components: JavaScript View Server
>            Reporter: Caolan McMahon
>              Labels: javascript
>         Attachments: module_cache.diff
>
>
> Having a CommonJS module A which requires B, when B also requires A causes the stack
to fill up with require calls. A prerequisite for this fix is the caching of modules, even
if it is only on a per-request basis.
> Patch incoming.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message