D3.js, a tool for JavaScript data visualization, has been made modular in an upgrade released this week.

Version 4.0 of D3 now features many libraries designed to work together. "You can pick and choose which parts to use as you see fit," according to release notes. "Each library is maintained in its own repository, allowing decentralized ownership and independent release cycles. The default bundle combines about 30 of these micro-libraries."

[ Use JavaScript in your dev shop? InfoWorld looks at 17 JavaScript editors and IDEs and 22 JavaScript frameworks ready for adoption. | Keep up with hot topics in programming with InfoWorld's Application Development newsletter. ]

D3 leverages data-driven DOM manipulation via HTML, CSS, and SVG. Arbitrary data can be bound to the DOM, and data-driven transformations can be applied to a document.

D3 is a visualization API intended to be the lowest layer of visualization tools, as in the visualization "kernel," or "standard library," developer Mike Bostock said. The software can be used for custom interactive graphics and as the basis for higher-level visualization tools.

While D3 used to use unicode variable names and string literals, version 4.0 uses only ASCII variable names and string literals to avoid encoding issues. A built-in asynchronous queue, meanwhile, enables loading of files in parallel.

Version 4.0 no longer has the d3.geom.polygon constructor; developers instead pass an array of vertices to polygon methods. The quadtree method has been replaced as well. "[Version] 4.0 removes the concept of quadtree generators (configurable functions that build a quadtree from an array of data); there are now just quadtrees, which you can create via d3.quadtree and add data to via quadtree.add and quadtree.addAll ," release notes state.

Selections, for data-driven transformation of the DOM, and transitions, for animating DOM changes, now are immutable in version 4.0, providing a cleaner interface. The axis component, which provides human-readable reference marks for scales encodings, has a better default appearance, and version 4.0 features better interaction for brushing.

The modularity in version 4 makes micro-libraries "easier to understand, develop and test," according to release notes. "They reduce the distinction between a core module and a plugin, and increase the pace of development in D3 features." Developers can release new features as standalone libraries for use with D3, but those who aren't interested in modularity still can use the default bundle.