# Upgrading to Varnish 7.3

## New VSL format

The binary format of Varnish logs changed to increase the space for VXIDs from 32 bits to 64. This is not a change that older versions of the Varnish logging utilities can understand, and the new utilities can also not process old logs.

There is no conversion tool from the old format to the new one, so this should become a problem only when raw logs are stored for future processing. If old binary logs need to remain usable, the only solution is to use a compatible Varnish version and at the time of this release, the 6.0 branch is the only one without an EOL date.

## For developers and VMOD authors: C interface changes requiring adjustments

### Via backends

The new backend argument to the `VRT_new_backend*()` functions is optional and `NULL` can be passed to match the previous behavior.

### suckaddr

The following functions return or accept `const` pointers from now on:

- `VSA_Clone()`

- `VSA_getsockname()`

- `VSA_getpeername()`

- `VSA_Malloc()`

- `VSA_Build*()`

- `VSS_ResolveOne()`

- `VSS_ResolveFirst()`

`VSA_free()` has been added to free heap memory allocated by `VSA_Malloc()` or one of the `VSA_Build*()` functions with a `NULL` first argument.

### directors

Directors which take and hold references to other directors via `VRT_Assign_Backend()` (typically any director which has other directors as backends) are now expected to implement the new `.release` callback of type `void vdi_release_f(VCL_BACKEND)`. This function is called by `VRT_DelDirector()`. The implementation is expected drop any backend references which the director holds (again using `VRT_Assign_Backend()` with `NULL` as the second argument).

Failure to implement this callback can result in deadlocks, in particular during VCL discard.

eof