@@ -47,6 +47,7 @@ To the consternation of some users, 3.x employed Unicode variable names such as

*[Number Formats](#number-formats-d3-format)

*[Geographies](#geographies-d3-geo)

*[Hierarchies](#hierarchies-d3-hierarchy)

*[Internals](#internals)

*[Interpolators](#interpolators-d3-interpolate)

*[Paths](#paths-d3-path)

*[Polygons](#polygons-d3-polygon)

...

...

@@ -553,6 +554,33 @@ The circle-packing layout, [d3.pack](https://github.com/d3/d3-hierarchy#pack), h

A non-hierarchical implementation is also available as [d3.packSiblings](https://github.com/d3/d3-hierarchy#packSiblings), and the smallest enclosing circle implementation is available as [d3.packEnclose](https://github.com/d3/d3-hierarchy#packEnclose). [Pack padding](https://github.com/d3/d3-hierarchy#pack_padding) now applies between a parent and its children, as well as between adjacent siblings. In addition, you can now specify padding as a function that is computed dynamically for each parent.

## Internals

The d3.rebind method has been removed. (See the [3.x source](https://github.com/d3/d3/blob/v3.5.17/src/core/rebind.js).) If you want to wrap a getter-setter method, the recommend pattern is to implement a wrapper method and check the return value. For example, given a *component* that uses an internal [*dispatch*](#dispatches-d3-dispatch), *component*.on can rebind *dispatch*.on as follows:

```js

component.on=function(){

varvalue=dispatch.on.apply(dispatch,arguments);

returnvalue===dispatch?component:value;

};

```

The d3.functor method has been removed. (See the [3.x source](https://github.com/d3/d3/blob/v3.5.17/src/core/functor.js).) If you want to promote a constant value to a function, the recommended pattern is to implement a closure that returns the constant value. If desired, you can use a helper method as follows:

```js

functionconstant(x){

returnfunction(){

returnx;

};

}

```

Given a value *x*, to promote *x* to a function if it is not already:

The [d3.interpolate](https://github.com/d3/d3-interpolate#interpolate) method no longer delegates to d3.interpolators, which has been removed; its behavior is now defined by the library. It is now slightly faster in the common case that *b* is a number. It only uses [d3.interpolateRgb](https://github.com/d3/d3-interpolate#interpolateRgb) if *b* is a valid CSS color specifier (and not approximately one). And if the end value *b* is null, undefined, true or false, d3.interpolate now returns a constant function which always returns *b*.