[ 
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

Reply via email to