---
title: "JMeter 3.1 Release Notes"
description: "Apache JMeter 3.1 release notes with 61 improvements and 36 bug fixes, plus upgrade notes from the official changelog."
url: https://docs.jmeter.ai/releases/3-1/
lastUpdated: 2026-10-01
source: docs.jmeter.ai
---

# JMeter 3.1 Release Notes

> **About these release notes**
> This page lists every documented change shipped in Apache JMeter 3.1, generated from the official changelog. For download and upgrade guidance, see [Download JMeter](/reference/download-jmeter/).

## Change summary

| Section | Changes |
| --- | --- |
| Incompatible changes | 15 |
| Improvements | 61 |
| Bug fixes | 36 |
| Non-functional changes | 17 |

## New and Noteworthy

## Incompatible changes

- A cache for CSS Parsing of URLs has been introduced in this version, it is enabled by default. It is controlled by property `css.parser.cache.size`. It can be disabled by setting its value to `0`. See [Bug 59885](https://bz.apache.org/bugzilla/show_bug.cgi?id=59885)
- ThroughputController defaults have changed. Now defaults are Percent Executions which is global and no more per user. See [Bug 60023](https://bz.apache.org/bugzilla/show_bug.cgi?id=60023)
- Since version 3.1, HTML report ignores empty `Transaction Controller` (possibly generated by `If Controller` or `Throughput Controller`) when computing metrics. This provides more accurate metrics
- Since version 3.1, Summariser ignores SampleResults generated by `Transaction Controller` when computing the live statistics, see [Bug 60109](https://bz.apache.org/bugzilla/show_bug.cgi?id=60109)
- Since version 3.1, when using Stripped modes (by default `StrippedBatch` is used), response will be stripped also for failing SampleResults, you can revert this to previous behaviour by setting `sample_sender_strip_also_on_error=false` in `user.properties`, see [Bug 60137](https://bz.apache.org/bugzilla/show_bug.cgi?id=60137)
- Since version 3.1, `jmeter.save.saveservice.connect_time` property value is `true`, meaning CSV file for results will contain an additional column containing connection time, see [Bug 60106](https://bz.apache.org/bugzilla/show_bug.cgi?id=60106)
- Since version 3.1, Random Timer subclasses (Gaussian Random Timer, Uniform Random Timer and Poisson Random Timer) implement interface `[org.apache.jmeter.timers.ModifiableTimer](/./api/org/apache/jmeter/timers/ModifiableTimer/)`
- Since version 3.1, if you don’t select any language in JSR223 Test Elements, Apache Groovy language will be used. See [Bug 59945](https://bz.apache.org/bugzilla/show_bug.cgi?id=59945)
- Since version 3.1, CSV DataSet now trims variable names to avoid issues due to spaces between variables names when configuring CSV DataSet. This should not have any impact for you unless you use space at the beginning or end of your variable names. See [Bug 60221](https://bz.apache.org/bugzilla/show_bug.cgi?id=60221)
- Since version 3.1, HTTP Request is able when using HttpClient4 (default) implementation to handle responses bigger than `2147483647` Bytes, that is 2GB. To allow this two properties have been introduced:      - `httpsampler.max_bytes_to_store_per_request` (defaults to 10MB) will control what is held in memory. By default JMeter will only keep in memory the first 10MB of a response. If you have responses larger than this value and use assertions that are after the first 10MB, then you must increase this value - `httpsampler.max_buffer_size` will control the buffer used to read the data. Previously JMeter used a buffer equal to Content-Length header which could lead to failures and make JMeter less resistant to faulty applications, but note this may impact response times and give slightly different results          than previous versions if your application returned a Content-Length header higher than current default value (65KB)     See [Bug 53039](https://bz.apache.org/bugzilla/show_bug.cgi?id=53039)

#### Deprecated and removed elements or functions

> **Note**
> These elements do not appear anymore in the menu, if you need them modify `not_in_menu` property. The JMeter team advises not to use them anymore and migrate to their replacement.

- [Bug 60222](https://bz.apache.org/bugzilla/show_bug.cgi?id=60222)Remove deprecated elements Distribution Graph, Spline Visualizer
- [Bug 60224](https://bz.apache.org/bugzilla/show_bug.cgi?id=60224)Deprecate `[Monitor Results](/./usermanual/component-reference/#Monitor_Results_(DEPRECATED))` listener. It will be dropped in next version.
- [Bug 60323](https://bz.apache.org/bugzilla/show_bug.cgi?id=60323)Deprecate BSF Elements (Use JSR223 Elements instead). They will probably be dropped in N+2 version. The following elements are deprecated:          - `[BSF Sampler](/./usermanual/component-reference/#BSF_Sampler_(DEPRECATED))` - `[BSF Listener](/./usermanual/component-reference/#BSF_Listener_(DEPRECATED))` - `[BSF Assertion](/./usermanual/component-reference/#BSF_Assertion_(DEPRECATED))` - `[BSF Timer](/./usermanual/component-reference/#BSF_Timer_(DEPRECATED))` - `[BSF PreProcessor](/./usermanual/component-reference/#BSF_PreProcessor_(DEPRECATED))` - `[BSF PostProcessor](/./usermanual/component-reference/#BSF_PostProcessor_(DEPRECATED))`
- [Bug 60225](https://bz.apache.org/bugzilla/show_bug.cgi?id=60225)Drop deprecated `__jexl` function, jexl support in BSF and dependency on `commons-jexl-1.1.jar`. This function can be easily replaced with `[__jexl3](/./usermanual/functions/#__jexl3)` function
- [Bug 60268](https://bz.apache.org/bugzilla/show_bug.cgi?id=60268)Drop org.apache.jmeter.gui.action.Analyze and deprecate org.apache.jmeter.reporters.FileReporter (will be removed in next version)

## Improvements

#### HTTP Samplers and Test Script Recorder

- [Bug 59882](https://bz.apache.org/bugzilla/show_bug.cgi?id=59882)Reduce memory allocations for better throughput. Contributed by Benoit Wiart (b.wiart at ubik-ingenierie.com) through [PR#217](https://github.com/apache/jmeter/pull/217) and [PR#228](https://github.com/apache/jmeter/pull/228)
- [Bug 59885](https://bz.apache.org/bugzilla/show_bug.cgi?id=59885)Optimize css parsing for embedded resources download by introducing a cache. Contributed by Benoit Wiart (b.wiart at ubik-ingenierie.com) through [PR#219](https://github.com/apache/jmeter/pull/219)
- [Bug 60092](https://bz.apache.org/bugzilla/show_bug.cgi?id=60092)View Result Tree: Add shortened version of the PUT body to sampler result.
- [Bug 60229](https://bz.apache.org/bugzilla/show_bug.cgi?id=60229)Add a new metric : sent_bytes. Implemented by Philippe Mouawad (p.mouawad at ubik-ingenierie.com) and contributed by Ubik Load Pack (support at ubikloadpack.com)
- [Bug 53039](https://bz.apache.org/bugzilla/show_bug.cgi?id=53039)HTTP Request : Be able to handle responses which size exceeds `2147483647` bytes (that is 2GB)
- [Bug 60265](https://bz.apache.org/bugzilla/show_bug.cgi?id=60265)HTTP Request : In Files Upload Tab you cannot resize columns
- [Bug 60318](https://bz.apache.org/bugzilla/show_bug.cgi?id=60318)Ignore CSS warnings when parsing with ph-css library.
- [Bug 60358](https://bz.apache.org/bugzilla/show_bug.cgi?id=60358)Http Request : Allow sending Body Data for HTTP GET request

#### Other samplers

- [PR#211](https://github.com/apache/jmeter/pull/211)Differentiate the timing for JDBC Sampler. Use latency and connect time. Contributed by Thomas Peyrard (thomas.peyrard at murex.com)
- [Bug 59620](https://bz.apache.org/bugzilla/show_bug.cgi?id=59620)Fix button action in “JMS Publisher → Random File from folder specified below” to allow to select a directory
- [Bug 60066](https://bz.apache.org/bugzilla/show_bug.cgi?id=60066)Handle CLOBs and BLOBs and limit them if necessary when storing them in result sampler.

#### Controllers

- [Bug 59351](https://bz.apache.org/bugzilla/show_bug.cgi?id=59351)Improve log/error/message for IncludeController. Partly contributed by Antonio Gomes Rodrigues (ra0077 at gmail.com)
- [Bug 60023](https://bz.apache.org/bugzilla/show_bug.cgi?id=60023)ThroughputController : Make “Percent Executions” and global the default values. Contributed by Ubik Load Pack (support at ubikloadpack.com)
- [Bug 60082](https://bz.apache.org/bugzilla/show_bug.cgi?id=60082)Validation mode : Be able to force Throughput Controller to run as if it was set to 100%
- [Bug 59349](https://bz.apache.org/bugzilla/show_bug.cgi?id=59349)Trim spaces in input filename in IncludeController.
- [Bug 60081](https://bz.apache.org/bugzilla/show_bug.cgi?id=60081)Interleave Controller : Add an option to alternate across threads

#### Listeners

- [Bug 59953](https://bz.apache.org/bugzilla/show_bug.cgi?id=59953)GraphiteBackendListener : Add Average metric. Partly contributed by Maxime Chassagneux (maxime.chassagneux at gmail.com)
- [Bug 59975](https://bz.apache.org/bugzilla/show_bug.cgi?id=59975)View Results Tree : Text renderer annoyingly scrolls down when content is bulky. Contributed by Ubik Load Pack (support at ubikloadpack.com)
- [Bug 60109](https://bz.apache.org/bugzilla/show_bug.cgi?id=60109)Summariser : Make it ignore TC generated SampleResult in its summary computations
- [Bug 59948](https://bz.apache.org/bugzilla/show_bug.cgi?id=59948)Add a formatted and sane HTML source code render to View Results Tree
- [Bug 60252](https://bz.apache.org/bugzilla/show_bug.cgi?id=60252)Add sent kbytes/s to Aggregate Report and Summary report
- [Bug 60267](https://bz.apache.org/bugzilla/show_bug.cgi?id=60267)UX : In View Results Tree it should be possible to close the Configure popup by typing escape. Contributed by Ubik Load Pack (support at ubikloadpack.com)

#### Timers, Assertions, Config, Pre- & Post-Processors

- [Bug 59845](https://bz.apache.org/bugzilla/show_bug.cgi?id=59845)Log messages about JSON Path mismatches at `debug` level instead of `error`.
- [PR#212](https://github.com/apache/jmeter/pull/212)Allow multiple selection and delete in HTTP Authorization Manager. Based on a patch by Benoit Wiart (b.wiart at ubik-ingenierie.com)
- [Bug 59816](https://bz.apache.org/bugzilla/show_bug.cgi?id=59816)[PR#213](https://github.com/apache/jmeter/pull/213)Allow multiple selection and delete in HTTP Header Manager. Based on a patch by Benoit Wiart (b.wiart at ubik-ingenierie.com)
- [Bug 59967](https://bz.apache.org/bugzilla/show_bug.cgi?id=59967)CSS/JQuery Extractor : Allow empty default value. Contributed by Ubik Load Pack (support at ubikloadpack.com)
- [Bug 59974](https://bz.apache.org/bugzilla/show_bug.cgi?id=59974)Response Assertion : Add button “`Add from clipboard`”. Contributed by Ubik Load Pack (support at ubikloadpack.com)
- [Bug 60050](https://bz.apache.org/bugzilla/show_bug.cgi?id=60050)CSV Data Set : Make it clear in the logs when a thread will exit due to this configuration
- [Bug 59962](https://bz.apache.org/bugzilla/show_bug.cgi?id=59962)Cache Manager does not update expires date when response code is `304`.
- [Bug 60018](https://bz.apache.org/bugzilla/show_bug.cgi?id=60018)Timer : Add a factor to apply on pauses. Partly based on a patch by Ubik Load Pack (support at ubikloadpack.com)
- [Bug 60203](https://bz.apache.org/bugzilla/show_bug.cgi?id=60203)Use more available space for textarea in XPath Assertion.
- [Bug 60220](https://bz.apache.org/bugzilla/show_bug.cgi?id=60220)Rename JSON Path Post Processor to JSON Extractor
- [Bug 60221](https://bz.apache.org/bugzilla/show_bug.cgi?id=60221)CSV DataSet : trim variable names
- [Bug 59329](https://bz.apache.org/bugzilla/show_bug.cgi?id=59329)Trim spaces in input filename in CSVDataSet.

#### Functions

- [Bug 59963](https://bz.apache.org/bugzilla/show_bug.cgi?id=59963)New function `__RandomFromMultipleVars`: Ability to compute a random value from values of one or more variables. Contributed by Ubik Load Pack (support at ubikloadpack.com)
- [Bug 59991](https://bz.apache.org/bugzilla/show_bug.cgi?id=59991)New function `__groovy` to evaluate Groovy Script. Contributed by Ubik Load Pack (support at ubikloadpack.com)

#### I18N

- [PR#214](https://github.com/apache/jmeter/pull/214)Add spanish translation for delayed starting of threads. Contributed by Asier Lostalé (asier.lostale at openbravo.com).
- [Bug 60348](https://bz.apache.org/bugzilla/show_bug.cgi?id=60348)Change chinese translation for `Save as`. Contributed by XMeter (support at xmeter.net).

#### Report / Dashboard

- [Bug 59954](https://bz.apache.org/bugzilla/show_bug.cgi?id=59954)Web Report/Dashboard : Add average metric
- [Bug 59956](https://bz.apache.org/bugzilla/show_bug.cgi?id=59956)Web Report / Dashboard : Add ability to generate a graph for a range of data
- [Bug 60065](https://bz.apache.org/bugzilla/show_bug.cgi?id=60065)Report / Dashboard : Improve Dashboard Error Summary by adding response message to “Type of error”. Contributed by Ubik Load Pack (support at ubikloadpack.com)
- [Bug 60079](https://bz.apache.org/bugzilla/show_bug.cgi?id=60079)Report / Dashboard : Add a new “Response Time Overview” graph
- [Bug 60080](https://bz.apache.org/bugzilla/show_bug.cgi?id=60080)Report / Dashboard : Add a new “Connect Time Over Time ” graph. Contributed by Ubik Load Pack (support at ubikloadpack.com)
- [Bug 60091](https://bz.apache.org/bugzilla/show_bug.cgi?id=60091)Report / Dashboard : Have a new report containing min/max and percentiles graphs.
- [Bug 60108](https://bz.apache.org/bugzilla/show_bug.cgi?id=60108)Report / Dashboard : In Requests Summary rounding is too aggressive
- [Bug 60098](https://bz.apache.org/bugzilla/show_bug.cgi?id=60098)Report / Dashboard : Reduce default value for “`jmeter.reportgenerator.statistic_window`” to reduce memory impact
- [Bug 60115](https://bz.apache.org/bugzilla/show_bug.cgi?id=60115)Add date format property for start/end date filter into Report generator
- [Bug 60171](https://bz.apache.org/bugzilla/show_bug.cgi?id=60171)Report / Dashboard : Active Threads Over Time should stack lines to give the total amount of threads running
- [Bug 60250](https://bz.apache.org/bugzilla/show_bug.cgi?id=60250)Report / Dashboard : Need to Add Sent KB/s in Statistics Report of HTML Dashboard
- [Bug 60287](https://bz.apache.org/bugzilla/show_bug.cgi?id=60287)Report / Dashboard : Have a new Top5 Errors by sampler table in Dashboard. Implemented by Philippe Mouawad (p.mouawad at ubik-ingenierie.com) and contributed by Ubik Load Pack (support at ubikloadpack.com)

#### General

- [Bug 59803](https://bz.apache.org/bugzilla/show_bug.cgi?id=59803)Use `isValid()` method from JDBC driver, if no `validationQuery`     is given in JDBC Connection Configuration.
- [Bug 57493](https://bz.apache.org/bugzilla/show_bug.cgi?id=57493)Create a documentation page for properties
- [Bug 59924](https://bz.apache.org/bugzilla/show_bug.cgi?id=59924)The log level of *XXX* package is set to `DEBUG` if `log_level._XXXX_` property value contains spaces, same for `__log` function
- [Bug 59777](https://bz.apache.org/bugzilla/show_bug.cgi?id=59777)Extract SLF4J binding into its own jar and make it a JMeter lib.      :::note If you get a warning about multiple SLF4J bindings on startup. Remove either the Apache JMeter provided binding           `lib/ApacheJMeter_slf4j_logkit.jar`, or all of the other reported bindings.           For more information you can have a look at [SLF4Js own info page.](http://www.slf4j.org/codes.html#multiple_bindings) :::
- [Bug 60085](https://bz.apache.org/bugzilla/show_bug.cgi?id=60085)Remove cache for prepared statements, as it didn’t work with the current JDBC pool implementation and current JDBC drivers should support caching of prepared statements themselves.
- [Bug 60137](https://bz.apache.org/bugzilla/show_bug.cgi?id=60137)In Distributed testing when using StrippedXXXX modes strip response also on error
- [Bug 60106](https://bz.apache.org/bugzilla/show_bug.cgi?id=60106)Settings defaults : Switch “`jmeter.save.saveservice.connect_time`” to true (after 3.0)
- [PR#229](https://github.com/apache/jmeter/pull/229) tiny memory allocation improvements. Contributed by Benoit Wiart (b.wiart at ubik-ingenierie.com)
- [Bug 59945](https://bz.apache.org/bugzilla/show_bug.cgi?id=59945)For all JSR223 elements, if script language has not been chosen on the UI, the script will be interpreted as a groovy script.
- [Bug 60266](https://bz.apache.org/bugzilla/show_bug.cgi?id=60266)Usability/ UX : It should not be possible to close/exit/Revert/Load/Load a recent project or create from template a JMeter plan or open a new one if a test is running
- [Bug 57305](https://bz.apache.org/bugzilla/show_bug.cgi?id=57305)Remove dependency of `ProxyControl` on `GuiPackage`. Based on patches by jarek102 (jarek102 at gmail.com) and Wyatt Epp (wyatt.epp at gmail.com)

## Bug fixes

#### HTTP Samplers and Test Script Recorder

- [Bug 58888](https://bz.apache.org/bugzilla/show_bug.cgi?id=58888)HTTP(S) Test Script Recorder (ProxyControl) does not add TestElement’s returned by `SamplerCreator#createChildren()`
- [Bug 59902](https://bz.apache.org/bugzilla/show_bug.cgi?id=59902)Https handshake failure when setting `httpclient.socket.https.cps` property
- [Bug 60084](https://bz.apache.org/bugzilla/show_bug.cgi?id=60084)JMeter 3.0 embedded resource URL is silently encoded
- [Bug 60376](https://bz.apache.org/bugzilla/show_bug.cgi?id=60376)Http Test Script Recorder : If deflate is used by server then recording may break application

#### Other Samplers

- [Bug 59113](https://bz.apache.org/bugzilla/show_bug.cgi?id=59113)JDBC Connection Configuration : Transaction Isolation level not correctly set if constant used instead of numerical

#### Controllers

- [Bug 60361](https://bz.apache.org/bugzilla/show_bug.cgi?id=60361)ModuleController : If a Test plan contains a Module Controller which references an unexistant Controller, JMeter in GUI mode will not stop

#### Listeners

- [Bug 59712](https://bz.apache.org/bugzilla/show_bug.cgi?id=59712)Display original query in RequestView when decoding fails. Based on a patch by          Teemu Vesala (teemu.vesala at qentinel.com)
- [Bug 60278](https://bz.apache.org/bugzilla/show_bug.cgi?id=60278)Since 2.13 (and [Bug 57514](https://bz.apache.org/bugzilla/show_bug.cgi?id=57514)), Aggregate Graph, Summary Report and Aggregate Report lost precision in the Error, Rate and Bandwidth values saved in the saved file csv
- [Bug 60360](https://bz.apache.org/bugzilla/show_bug.cgi?id=60360)View Result Tree : Request Tab does not show body of a DELETE request

#### Timers, Assertions, Config, Pre- & Post-Processors

- [Bug 59964](https://bz.apache.org/bugzilla/show_bug.cgi?id=59964)JSR223 Test Element : Cache compiled script if available is not correctly reset. Contributed by Ubik Load Pack (support at ubikloadpack.com)
- [Bug 59609](https://bz.apache.org/bugzilla/show_bug.cgi?id=59609)Format extracted JSON Objects in JSON Post Processor correctly as JSON.
- [Bug 60332](https://bz.apache.org/bugzilla/show_bug.cgi?id=60332)View Results Tree : With Windows LAF, JSON Extractor does not show JSON Path Expression and Result panel

#### Functions

#### I18N

#### General

- [Bug 59400](https://bz.apache.org/bugzilla/show_bug.cgi?id=59400)Get rid of UnmarshalException on stopping when `-X` option is used.
- [Bug 59607](https://bz.apache.org/bugzilla/show_bug.cgi?id=59607)JMeter crashes when reading large test plan (greater than 2GB). Based on fix by Felix Draxler (felix.draxler at sap.com)
- [Bug 59621](https://bz.apache.org/bugzilla/show_bug.cgi?id=59621)Error count in report dashboard is one off.
- [Bug 59657](https://bz.apache.org/bugzilla/show_bug.cgi?id=59657)Only set font in JSyntaxTextArea, when property `jsyntaxtextarea.font.family` is set.
- [Bug 59720](https://bz.apache.org/bugzilla/show_bug.cgi?id=59720)Batch test file comparisons fail on Windows as XML files are generated as EOL=LF
- Code cleanups. Patches by Graham Russell (graham at ham1.co.uk)
- [Bug 59722](https://bz.apache.org/bugzilla/show_bug.cgi?id=59722)Use StandardCharsets to reduce the possibility of misspelling Charset names.
- [Bug 59723](https://bz.apache.org/bugzilla/show_bug.cgi?id=59723)Use `jmeter.properties` for testing whenever possible
- [Bug 59726](https://bz.apache.org/bugzilla/show_bug.cgi?id=59726)Unit test to check that CSV header text and sample format don’t change unexpectedly
- [Bug 59889](https://bz.apache.org/bugzilla/show_bug.cgi?id=59889)Change encoding to UTF-8 in reports for dashboard.
- [Bug 60053](https://bz.apache.org/bugzilla/show_bug.cgi?id=60053)In Non GUI mode, a Stacktrace is shown at end of test while report is being generated
- [Bug 60049](https://bz.apache.org/bugzilla/show_bug.cgi?id=60049)When using Timers with high delays or Constant Throughput Timer with low throughput, Scheduler may take a lot of time to exit, same for Shutdown test
- [Bug 60089](https://bz.apache.org/bugzilla/show_bug.cgi?id=60089)Report / Dashboard : Bytes throughput Over Time has reversed Sent and Received bytes. Contributed by Ubik Load Pack (support at ubikloadpack.com)
- [Bug 60090](https://bz.apache.org/bugzilla/show_bug.cgi?id=60090)Report / Dashboard : Empty Transaction Controller should not count in metrics
- [Bug 60103](https://bz.apache.org/bugzilla/show_bug.cgi?id=60103)Report / Dashboard : Requests summary includes Transaction Controller leading to wrong percentage
- [Bug 60105](https://bz.apache.org/bugzilla/show_bug.cgi?id=60105)Report / Dashboard : Report requires Transaction Controller “`generate parent sample`” option to be checked, fix related issues
- [Bug 60107](https://bz.apache.org/bugzilla/show_bug.cgi?id=60107)Report / Dashboard : In StatisticSummary, TransactionController SampleResult makes Total line wrong
- [Bug 60110](https://bz.apache.org/bugzilla/show_bug.cgi?id=60110)Report / Dashboard : In Response Time Percentiles, slider is useless
- [Bug 60135](https://bz.apache.org/bugzilla/show_bug.cgi?id=60135)Report / Dashboard : Active Threads Over Time should be in OverTime section
- [Bug 60125](https://bz.apache.org/bugzilla/show_bug.cgi?id=60125)Report / Dashboard : Dashboard cannot be generated if the default delimiter is `\t`. Based on a report from Tamas Szabadi (tamas.szabadi at rightside.co)
- [Bug 59439](https://bz.apache.org/bugzilla/show_bug.cgi?id=59439)Report / Dashboard : AbstractOverTimeGraphConsumer.createGroupInfos() should be abstract
- [Bug 59918](https://bz.apache.org/bugzilla/show_bug.cgi?id=59918)Ant generated HTML report is broken (extras folder)
- [Bug 60295](https://bz.apache.org/bugzilla/show_bug.cgi?id=60295)JSON Extractor doesn’t index array elements when only one element is found. Based on a patch by Roberto Braga (roberto.braga at sociale.it)
- [Bug 60299](https://bz.apache.org/bugzilla/show_bug.cgi?id=60299)Thread Group with Scheduler : Weird behaviour when End-Time is in the past

## Non-functional changes

- Updated to jsoup-1.10.1 (from 1.8.3)
- Updated to ph-css 4.1.6 (from 4.1.4)
- Updated to tika-core and tika-parsers 1.14 (from 1.12)
- Updated to commons-io 2.5 (from 2.4)
- Updated to commons-lang3 3.5 (from 3.4)
- Updated to commons-net 3.5 (from 3.4)
- Updated to groovy 2.4.7 (from 2.4.6)
- Updated to httpcore 4.4.5 (from 4.4.4)
- Updated to slf4j-api 1.7.21 (from 1.7.13)
- Updated to rsyntaxtextarea-2.6.0 (from 2.5.8)
- Updated to xstream 1.4.9 (from 1.4.8)
- Updated to jodd 3.7.1 (from 3.6.7.jar)
- Updated to xmlgraphics-commons 2.1 (from 2.0.1)
- [PR#215](https://github.com/apache/jmeter/pull/215)Reduce duplicated code by using the newly added method `GuiUtils#cancelEditing`.     Contributed by Benoit Wiart (b.wiart at ubik-ingenierie.com)
- [PR#218](https://github.com/apache/jmeter/pull/218)Misc cleanup. Contributed by Benoit Wiart (b.wiart at ubik-ingenierie.com)
- [PR#216](https://github.com/apache/jmeter/pull/216)Re-use pattern when possible. Contributed by Benoit Wiart (b.wiart at ubik-ingenierie.com)
- [Bug 60364](https://bz.apache.org/bugzilla/show_bug.cgi?id=60364)Document Test Coverage. Contributed by Thomas Schapitz (ts-nospam12 at online.de)

## Thanks

We thank all contributors mentioned in bug and improvement sections above:

- Felix Draxler (felix.draxler at sap.com)
- Antonio Gomes Rodrigues (ra0077 at gmail.com)
- Graham Russell (graham at ham1.co.uk)
- Teemu Vesala (teemu.vesala at qentinel.com)
- Asier Lostalé (asier.lostale at openbravo.com)
- Thomas Peyrard (thomas.peyrard at murex.com)
- Benoit Wiart (b.wiart at ubik-ingenierie.com)
- Maxime Chassagneux (maxime.chassagneux at gmail.com)
- [Ubik Load Pack](http://ubikloadpack.com)
- Tamas Szabadi (tamas.szabadi at rightside.co)
- Roberto Braga (roberto.braga at soziale.it)
- jarek102 at gmail.com
- Wyatt Epp (wyatt.epp at gmail.com)
- Thomas Schapitz (ts-nospam12 at online.de)

We also thank bug reporters who helped us improve JMeter.

For this release we want to give special thanks to the following reporters for the clear reports and tests made after our fixes:

Apologies if we have omitted anyone else.

## Improve Report/Dashboard

The Dashboard has been improved with 3 new graphs and 1 summary table:

- Connect Time over Time graph :

![dashboard/report_connect_time_over_time.png](/images/screenshots/dashboard/report_connect_time_over_time.png)
- Response Time Percentiles Over Time (successful responses) graph :

![dashboard/response_time_percentiles_over_time.png](/images/screenshots/dashboard/response_time_percentiles_over_time.png)
- Response Time Overview graph :

![dashboard/response_time_overview.png](/images/screenshots/dashboard/response_time_overview.png)
- Top 5 errors by Sampler table :

![dashboard/top_5_errors_by_sampler.png](/images/screenshots/dashboard/top_5_errors_by_sampler.png)
- More details on errors in Errors table
- Average response time added to Statistics table :

![dashboard/report_statistics.png](/images/screenshots/dashboard/report_statistics.png)
- Active Threads table now stacks threads :

![dashboard/report_active_threads_over_time.png](/images/screenshots/dashboard/report_active_threads_over_time.png)

## New Metrics

A new `sent_bytes` metric has been introduced which reports the bytes sent to server.

Another metric `connect_time` has been enabled by default in this version

## Handling Big responses

JMeter is now able to handle in terms of metrics responses bigger than 2GB, limit has been increased to 9223372 TB.

To handle such big responses, it can also now truncate part of the response to avoid overflooding memory. See `httpsampler.max_bytes_to_store_per_request` property.

## New `__groovy` function

Introduce a new function `__groovy` that enables Groovy functions. This can be handy, as JavaScript can be quite slow (same for BeanShell), when used in highly concurrent test plans.

## Use Groovy as default for JSR-223 elements

Groovy is now set as the default language for JSR-223 elements. If you want to use another of the supported language, you have to make an explicit choice.

> **Note**
> By default `Cache compiled script if available` is not checked by default although we advise you to check it and ensure you don’t use `\${varName}` syntax to access JMeter variables but `vars.get("varName")` instead.

## Formatted HTML source view in Results Tree View

The HTML source code in the Results Tree View can now be viewed formatted. This is extremely useful, if the code of the webpage has been stripped of all superfluous whitespace.

![New formatted HTML source view](/images/screenshots/html-formatted-tree-view.png)

*New formatted HTML source view*

## Ability to update all timers in Test plan with a new property

A new property `timer.factor=1.0f` has been introduced which allows you to multiply pause times computed by Gaussian, Uniform and Poisson Timers by it.
This allows you to update Think Times from one place and let you gain productivity.

### Core improvements

- Various GUI and UX fixes
- Memory usage improvements
- JDBC Request is now able to return Blob/Clob and computes latency and connect time
- CSS Parsing introduced in 3.0 has been optimized by introduction of a parsing cache
- HTTP Request is now able to handle body in GET request, this is useful for Elastic Search requests for example.

### Documentation improvements

- Documentation review and improvements for easier startup
- New [properties reference](/usermanual/properties-reference/) documentation section

## Useful links

- [Download JMeter](/reference/download-jmeter/)
- [Getting started guide](/getting-started/get-started/)
- [All release notes](/releases/)
- [Current changes page](/user-manual/changes/)
- [History of previous changes](/user-manual/changes-history/)
