diff --git a/doc/releasenotes/rf-7.0a2.rst b/doc/releasenotes/rf-7.0a2.rst
new file mode 100644
index 00000000000..d8d4a80b432
--- /dev/null
+++ b/doc/releasenotes/rf-7.0a2.rst
@@ -0,0 +1,1020 @@
+===========================
+Robot Framework 7.0 alpha 2
+===========================
+
+.. default-role:: code
+
+
+`Robot Framework`_ 7.0 is a new major release with native `VAR` syntax for creating
+variables (`#3761`_), support for mixing embedded and normal arguments with library
+keywords (`#4710`_) and various other enhancements and bug fixes. Robot Framework 7.0
+requires Python 3.8 or newer (`#4294`_).
+
+Robot Framework 7.0 alpha 2 was released on Wednesday November 22, 2023.
+It is especially targeted for external tool developers for testing how
+`backwards incompatible changes`_ and deprecations_ possibly affect their tools.
+We can still make adjustments or even revert problematic changes before
+the final release.
+
+We also hope to get feedback from the general user base related to the `VAR`
+syntax (`#3761`_) and other new features. Making changes to them is much easier
+now than after the final release when we need to take backwards compatibility
+into account.
+
+Questions and comments related to the release can be sent to the `#devel`
+channel on `Robot Framework Slack`_ and possible bugs submitted to
+the `issue tracker`_. All issues targeted for Robot Framework 7.0 can be found
+from the `issue tracker milestone`_.
+
+.. _Robot Framework: http://robotframework.org
+.. _Robot Framework Foundation: http://robotframework.org/foundation
+.. _pip: http://pip-installer.org
+.. _PyPI: https://pypi.python.org/pypi/robotframework
+.. _issue tracker milestone: https://github.com/robotframework/robotframework/milestone/64
+.. _issue tracker: https://github.com/robotframework/robotframework/issues
+.. _robotframework-users: http://groups.google.com/group/robotframework-users
+.. _Slack: http://slack.robotframework.org
+.. _Robot Framework Slack: Slack_
+.. _installation instructions: ../../INSTALL.rst
+
+.. contents::
+ :depth: 2
+ :local:
+
+Installation
+============
+
+If you have pip_ installed, just run
+
+::
+
+ pip install --pre --upgrade robotframework
+
+to install the latest available release or use
+
+::
+
+ pip install robotframework==7.0a2
+
+to install exactly this version. Alternatively you can download the package
+from PyPI_ and install it manually. For more details and other installation
+approaches, see the `installation instructions`_.
+
+Most important enhancements
+===========================
+
+Native `VAR` syntax
+-------------------
+
+The new `VAR` syntax (`#3761`_) makes it possible to create local variables
+as well as global, suite and test/task scoped variables dynamically during
+execution. The motivation is to have a more convenient syntax than using
+the `Set Variable` keyword for creating local variables and to unify
+the syntax for creating variables in different scopes. Except for the mandatory
+`VAR` marker, the syntax is also the same as when creating variables in the
+Variables section. The syntax is best explained with examples:
+
+.. sourcecode:: robotframework
+
+ *** Test Cases ***
+ Example
+ # Create a local variable `${local}` with value `value`.
+ VAR ${local} value
+
+ # Create a suite-scoped variable, visible throughout the whole suite.
+ # Supported scopes are GLOBAL, SUITE, TEST, TASK and LOCAL (default).
+ VAR ${suite} value scope=SUITE
+
+ # Validate created variables.
+ Should Be Equal ${local} value
+ Should Be Equal ${suite} value
+
+ Example continued
+ # Suite level variables are seen also by subsequent tests.
+ Should Be Equal ${suite} value
+
+When creating `${scalar}` variables having long values, it is possible to split
+the value to multiple lines. Lines are joined together with a space by default,
+but that can be changed with the `separator` configuration option. Similarly as
+in the Variables section, it is possible to create also `@{list}` and `&{dict}`
+variables. Unlike in the Variables section, variables can be created conditionally
+using IF/ELSE structures:
+
+.. sourcecode:: robotframework
+
+ *** Test Cases ***
+ Long value
+ VAR ${long}
+ ... This value is rather long.
+ ... It has been split to multiple lines.
+ ... Parts will be joined together with a space.
+
+ Multiline
+ VAR ${multiline}
+ ... First line.
+ ... Second line.
+ ... Last line.
+ ... separator=\n
+
+ List
+ # Creates a list with three items.
+ VAR @{list} a b c
+
+ Dictionary
+ # Creates a dict with two items.
+ VAR &{dict} key=value second=item
+
+ Normal IF
+ IF 1 > 0
+ VAR ${x} true value
+ ELSE
+ VAR ${x} false value
+ END
+
+ Inline IF
+ IF 1 > 0 VAR ${x} true value ELSE VAR ${x} false value
+
+Mixed argument support with library keywords
+--------------------------------------------
+
+User keywords got support to use both embedded and normal arguments in Robot
+Framework 6.1 (`#4234`__) and now that support has been added also to library keywords
+(`#4710`_). The syntax works so, that if the function or method implementing the keyword
+accepts more arguments than there are embedded arguments, the remaining arguments
+can be passed in as normal arguments. This is illustrated by the following example
+keyword:
+
+.. sourcecode:: python
+
+ @keyword('Number of ${animals} should be')
+ def example(animals, count):
+ ...
+
+The above keyword could be used like this:
+
+.. sourcecode:: robotframework
+
+ *** Test Cases ***
+ Example
+ Number of horses should be 2
+ Number of horses should be count=2
+ Number of dogs should be 3
+
+__ https://github.com/robotframework/robotframework/issues/4234
+
+Tags set globally can be removed using `-tag` syntax
+----------------------------------------------------
+
+Individual tests and keywords can nowadays remove tags set in the Settings
+section with `Test Tags` or `Keyword Tags` settings by using the `-tag` syntax
+(`#4374`_). For example, tests `T1` and `T3` below are given tags `all` and
+`most`, and test `T2` gets tags `all` and `one`:
+
+.. sourcecode:: robotframework
+
+ *** Settings ***
+ Test Tags all most
+
+ *** Test Cases ***
+ T1
+ No Operation
+ T2
+ [Tags] one -most
+ No Operation
+ T3
+ No Operation
+
+With tests it is possible to get the same effect by using the `Default Tags`
+setting and overriding it where needed. That syntax is, however, considered
+deprecated (`#4365`__) and using the new `-tag` syntax is recommended.
+
+__ https://github.com/robotframework/robotframework/issues/4365
+
+Dynamic and hybrid library APIs support asynchronous execution
+--------------------------------------------------------------
+
+Dynamic and hybrid libraries nowadays support asynchronous execution.
+In practice the special methods like `get_keyword_names` and `run_keyword`
+can be implemented as async methods. (`#4803`_)
+
+Async support was added to the normal static library API in Robot Framework
+6.1 (`#4089`_). A bug related to handling asynchronous keywords if the whole
+execution is stopped gracefully has also been fixed (`#4808`_).
+
+.. _#4089: https://github.com/robotframework/robotframework/issues/4089
+
+Support `'list[int]'` and `'int | float'` in argument conversion
+----------------------------------------------------------------
+
+Python's type hinting syntax has evolved so that generic types can be parameterized
+like `list[int]` (new in `Python 3.9`__) and unions written as `int | float`
+(new in `Python 3.10`__). Using these constructs with older Python versions causes
+errors, but Python type checkers support also "stringified" type hints like
+`'list[int]'` and `'int | float'` that work regardless the Python version.
+
+Support for stringified generics and unions has now been added also to
+Robot Framework's argument conversion (`#4711`_). For example,
+the following typing now also works with Python 3.8:
+
+.. sourcecode:: python
+
+ def example(a: 'list[int]', b: 'int | float'):
+ ...
+
+These stringified types are also compatible with the Remote library API and other
+scenarios where using actual types is not feasible.
+
+__ https://peps.python.org/pep-0585/
+__ https://peps.python.org/pep-0604/
+
+Timestamps in result model and output.xml use standard format
+-------------------------------------------------------------
+
+Timestamps used in the result model and stored to the output.xml file earlier
+used custom format like `20231107 19:57:01.123`. Non-standard formats are seldom
+a good idea, and in this case parsing the custom format turned out to be slow
+as well.
+
+Nowadays the result model stores timestamps as standard datetime_ objects and
+elapsed times as timedelta_ (`#4258`_). This makes creating timestamps and
+operating with them more convenient and considerably faster. The new objects can
+be accessed via `start_time`, `end_time` and `elapsed_time` attributes that were
+added as forward compatibility already in Robot Framework 6.1 (`#4765`_).
+Old information is still available via the old `starttime`, `endtime` and
+`elapsedtime` attributes so this change is fully backwards compatible.
+
+The timestamp format in output.xml has also been changed from the custom
+`YYYYMMDD HH:MM:SS.mmm` format to `ISO 8601`_ compatible
+`YYYY-MM-DDTHH:MM:SS.mmmmmm`. Using a standard format makes it
+easier to process output.xml files, but this change also has big positive
+performance effect. Now that the result model stores timestamps as datetime_
+objects, formatting and parsing them with the available `isoformat()`__ and
+`fromisoformat()`__ methods is very fast compared to custom formatting and parsing.
+
+A related change is that instead of storing start and end times of each executed
+item in output.xml, we nowadays store their start and elapsed times. Elapsed times
+are represented as floats denoting seconds. Having elapsed times directly available
+is a lot more convenient than calculating them based on start and end times.
+Storing start and elapsed times also takes less space than storing start and end times.
+
+As the result of these changes, times are available in the result model and in
+output.xml in higher precision than earlier. Earlier times were stored in millisecond
+granularity, but nowadays we use microseconds. Logs and reports still use milliseconds,
+but that can be changed in the future if there are needs.
+
+Changes to output.xml are backwards incompatible and affect all external tools
+that process timestamps. This is discussed more in `Changes to output.xml`_
+section below along with other output.xml changes.
+
+.. _datetime: https://docs.python.org/3/library/datetime.html#datetime-objects
+.. _timedelta: https://docs.python.org/3/library/datetime.html#timedelta-objects
+.. _#4765: https://github.com/robotframework/robotframework/issues/4765
+.. _ISO 8601: https://en.wikipedia.org/wiki/ISO_8601
+__ https://docs.python.org/3/library/datetime.html#datetime.datetime.isoformat
+__ https://docs.python.org/3/library/datetime.html#datetime.datetime.fromisoformat
+
+Backwards incompatible changes
+==============================
+
+Python 3.6 and 3.7 are no longer supported
+------------------------------------------
+
+Robot Framework 7.0 requires Python 3.8 or newer (`#4294`_). The last version
+that supports Python 3.6 and 3.7 is Robot Framework 6.1.1.
+
+Changes to output.xml
+---------------------
+
+The output.xml file has changed in different ways making Robot Framework 7.0
+incompatible with external tools processing output.xml files until these tools
+are updated. We try to avoid this kind of breaking changes, but in this case
+especially the changes to timestamps were considered so important that we
+eventually would have needed to do them anyway.
+
+Due to the changes being relatively big, it can take some time before external
+tools are updated. To allow users to take Robot Framework 7.0 into use also
+if they depend on an incompatible tool, it is possible to use the new
+`--legacy-output` option both as part of execution and with the Rebot tool
+to generate output.xml files that are compatible with older versions.
+
+Timestamp related changes
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The biggest changes in output.xml are related to timestamps (`#4258`_).
+With earlier versions start and end times of executed items, as well as timestamps
+of the logged messages, were stored using a custom `YYYYMMDD HH:MM:SS.mmm` format,
+but nowadays the format is `ISO 8601`_ compatible `YYYY-MM-DDTHH:MM:SS.mmmmmm`.
+In addition to that, instead of saving start and end times to `starttime` and
+`endtime` attributes and message times to `timestamp`, start and elapsed times
+are now stored to `start` and `elapsed` attributes and message times to `time`.
+
+Examples:
+
+.. sourcecode:: xml
+
+
+ Hello world!
+
+
+
+ Hello world!
+
+
+The new format is standard compliant, contains more detailed times, makes the elapsed
+time directly available and makes the `` elements over 10% shorter.
+These are all great benefits, but we are still sorry for all the extra work
+this causes for those developing tools that process output.xml files.
+
+Keyword name related changes
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+How keyword names are stored in output.xml has changed slightly as well (`#4884`_).
+With each executed keywords we store both the name of the keyword and the name
+of the library or resource file containing it. Earlier the latter was stored to
+attribute `library` also with resource files, but nowadays the attribute is generic
+`owner`. In addition to `owner` being a better name in general, it also
+matches the new `owner` attribute keywords in the result model have.
+
+Another change is that the original name stored with keywords using embedded
+arguments is nowadays in `source_name` attribute when it used to be in `sourcename`.
+This change was done to make the attribute consistent with the attribute in
+the result model.
+
+Examples:
+
+.. sourcecode:: xml
+
+
+ ...
+ ...
+
+
+ ...
+ ...
+
+Other changes
+~~~~~~~~~~~~~
+
+Nowadays keywords and control structures can have a message. Messages are represented
+as the text of the `` element, and they have been present already earlier with
+tests and suites. Related to this, control structured cannot anymore have ``.
+(`#4883`_)
+
+These changes should not cause problems for tools processing output.xml files,
+but storing messages with each failed keyword and control structure may
+increase the output.xml size.
+
+Schema updates
+~~~~~~~~~~~~~~
+
+The output.xml schema has been updated and can be found via
+https://github.com/robotframework/robotframework/tree/master/doc/schema/.
+
+Changes to result model
+-----------------------
+
+There have been some changes to the result model that unfortunately affect
+external tools using it. The main motivation for these changes has been
+cleaning up the model before creating a JSON representation for it (`#4847`_).
+
+.. _#4847: https://github.com/robotframework/robotframework/issues/4847
+
+Changes related to keyword names
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The biggest changes are related to keyword names (`#4884`_). Earlier `Keyword`
+objects had a `name` attribute that contained the full keyword name like
+`BuiltIn.Log`. The actual keyword name and the name of the library or resource
+file that the keyword belonged to were in `kwname` and `libname` attributes,
+respectively. In addition to these, keywords using embedded arguments also had
+a `sourcename` attribute containing the original keyword name.
+
+Due to reasons explained in `#4884`_, the following changes have been made
+in Robot Framework 7.0:
+
+- Old `kwname` is renamed to `name`. This is consistent with the execution side `Keyword`.
+- Old `libname` is renamed to generic `owner`.
+- New `full_name` is introduced to replace the old `name`.
+- `sourcename` is renamed to `source_name`.
+- `kwname`, `libname` and `sourcename` are preserved as properties. They are considered
+ deprecated, but accessing them will not cause a deprecation in this release yet.
+
+The backwards incompatible part of this change is changing the meaning of the
+`name` attribute. It used to be a read-only property yielding the full name
+like `BuiltIn.Log`, but now it is a normal attribute that contains just the actual
+keyword name like `Log`. All other old attributes have been preserved as properties.
+
+Deprecated attributes have been removed
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The following attributes that were deprecated already in Robot Framework 4.0
+have been removed (`#4846`_):
+
+- `TestSuite.keywords`. Use `TestSuite.setup` and `TestSuite.teardown` instead.
+- `TestCase.keywords`. Use `TestCase.body`, `TestCase.setup` and `TestCase.teardown` instead.
+- `Keyword.keywords`. Use `Keyword.body` and `Keyword.teardown` instead.
+- `Keyword.children`. Use `Keyword.body` and `Keyword.teardown` instead.
+- `TestCase.critical`. The whole criticality concept has been removed.
+
+Additionally, `TestSuite.keywords` and `TestCase.keywords` have been removed
+from the execution model.
+
+Changes to parsing model
+------------------------
+
+There have been some changes also to the parsing model:
+
+- The node representing the deprecated `[Return]` setting has been renamed from
+ `Return` to `ReturnSetting`. At the same time, the node representing the
+ `RETURN` statement has been renamed from `ReturnStatement` to `Return` (`#4939`_).
+
+ To ease transition, `ReturnSetting` has existed as an alias for `Return` starting
+ from Robot Framework 6.1 (`#4656`_) and `ReturnStatement` is preserved as an alias
+ now. In addition to that, the `ModelVisitor` base class has special handling for
+ `visit_ReturnSetting` and `visit_ReturnStatement` visitor methods so that they work
+ correctly with `ReturnSetting` and `ReturnStatement` with Robot Framework 6.1 and
+ newer. Issue `#4939`_ explains this in more detail and has a concrete example
+ how to support also older Robot Framework versions.
+
+- The node representing the `Test Tags` setting as well as the deprecated
+ `Force Tags` setting has been renamed from `ForceTags` to `TestTags` (`#4385`_).
+ `ModelVisitor` has special handling for the `visit_ForceTags` method so
+ that it will continue to work also after the change.
+
+- The token type used with `AS` (or `WITH NAME`) in library imports has been changed
+ to `Token.AS` (`#4375`_). `Token.WITH_NAME` still exists as an alias for `Token.AS`.
+
+- Statement `type` and `tokens` have been moved from `_fields` to `_attributes` (`#4912`_).
+ This may affect debugging the model.
+
+.. _#4656: https://github.com/robotframework/robotframework/issues/4656
+
+Changes to Libdoc spec files
+----------------------------
+
+The following deprecated constructs have been removed from Libdoc spec files (`#4667`_):
+
+- `datatypes` have been removed from XML or JSON spec files. They were deprecated in
+ favor of `typedocs` already in Robot Framework 5.0 (`#4160`_).
+- Type names are not anymore written to XML specs as content of the `` elements.
+ The name is available as the `name` attribute of `` elements since
+ Robot Framework 6.1 (`#4538`_).
+- `types` and `typedocs` attributes have been removed from arguments in JSON specs.
+ The `type` attribute introduced in RF 6.1 (`#4538`_) needs to be used instead.
+
+Libdoc schema files have been updated and can be found via
+https://github.com/robotframework/robotframework/tree/master/doc/schema/.
+
+.. _#4160: https://github.com/robotframework/robotframework/issues/4160
+.. _#4538: https://github.com/robotframework/robotframework/issues/4538
+
+Changes to selecting tests with `--suite`, `--test` and `--include`
+-------------------------------------------------------------------
+
+There are two changes related to selecting tests:
+
+- When using `--test` and `--include` together, tests matching either of them
+ are selected (`#4721`_). Earlier tests need to match both options to be selected.
+
+- When selecting a suite using its parent suite as a prefix like `--suite parent.suite`,
+ the given name must match the full suite name (`#4720`_). Earlier it was enough if
+ the prefix matched the closest parent or parents.
+
+Other backwards incompatible changes
+------------------------------------
+
+- The default value of the `stdin` argument used with `Process` library keyword
+ has been changed from `subprocess.PIPE` to `None` (`#4103`_). This change ought
+ to avoid processes hanging in some cases. Those who depend on the old behavior
+ need to use `stdin=PIPE` explicitly to enable that.
+
+- When type hints are specified as strings, they must use format `type`, `type[param]`,
+ `type[p1, p2]` or `t1 | t2` (`#4711`_). Using other formats will cause errors taking
+ keywords into use. In practice problems occur if the special characters `[`, `]`, `,`
+ and `|` occur in unexpected places. For example, `arg: "Hello, world!"` will cause
+ an error due to the comma.
+
+- `datetime`, `date` and `timedelta` objects are sent over the Remote interface
+ differently than earlier (`#4784`_). They all used to be converted to strings, but
+ nowadays `datetime` is sent as-is, `date` is converted to `datetime` and sent like
+ that, and `timedelta` is converted to a `float` by using `timedelta.total_seconds()`.
+
+- `robot.utils.normalize` does not anymore support bytes (`#4936`_).
+
+- Deprecated `accept_plain_values` argument has been removed from the
+ `timestr_to_secs` utility function (`#4861`_).
+
+Deprecations
+============
+
+`[Return]` setting
+------------------
+
+The `[Return]` setting for specifying the return value from user keywords has
+been "loudly" deprecated (`#4876`_). It has been "silently" deprecated since
+Robot Framework 5.0 when the much more versatile `RETURN` setting was introduced
+(`#4078`_), but now using it will cause a deprecation warning. The plan is to
+preserve the `[Return]` setting at least until Robot Framework 8.0.
+
+If you have lot of data that uses `[Return]`, the easiest way to update it is
+using the Robotidy_ tool that can convert `[Return]` to `RETURN` automatically.
+If you have data that is executed also with Robot Framework versions that do
+not support `RETURN`, you can use the `Return From Keyword` keyword instead.
+That keyword will eventually be deprecated and removed as well, though.
+
+.. _#4078: https://github.com/robotframework/robotframework/issues/4078
+.. _Robotidy: https://robotidy.readthedocs.io
+
+Singular section headers
+------------------------
+
+Using singular section headers like `*** Test Case ***` or `*** Setting ***`
+nowadays causes a deprecation warning (`#4432`_). They were silently deprecated
+in Robot Framework 6.0 for reasons explained in issue `#4431`_.
+
+.. _#4431: https://github.com/robotframework/robotframework/issues/4431
+
+Deprecated attributes in parsing, running and result models
+-----------------------------------------------------------
+
+- In the parsing model, `For.variables`, `ForHeader.variables`, `Try.variable` and
+ `ExceptHeader.variable` attributes have been deprecated in favor of the new `assign`
+ attribute (`#4708`_).
+
+- In running and result models, `For.variables` and `TryBranch.variable` have been
+ deprecated in favor of the new `assign` attribute (`#4708`_).
+
+- In the result model, control structures like `FOR` were earlier modeled so that they
+ looked like keywords. Nowadays they are considered totally different objects and
+ their keyword specific attributes `name`, `kwnane`, `libname`, `doc`, `args`,
+ `assign`, `tags` and `timeout` have been deprecated (`#4846`_).
+
+- `starttime`, `endtime` and `elapsed` time attributes in the result model have been
+ silently deprecated (`#4258`_). Accessing them does not yet cause a deprecation
+ warning, but users are recommended to use `start_time`, `end_time` and
+ `elapsed_time` attributes that are available since Robot Framework 6.1.
+
+- `kwname`, `libname` and `sourcename` attributes used by the `Keyword` object
+ in the result model have been silently deprecated (`#4884`_). New code should use
+ `name`, `owner` and `source_name` instead.
+
+Other deprecated features
+-------------------------
+
+- Using embedded arguments with a variable that has a value not matching custom
+ embedded argument patterns nowadays causes a deprecation warning (`#4524`_).
+ Earlier variables used as embedded arguments were always accepted without
+ validating values.
+
+- Using `FOR IN ZIP` loops with lists having different lengths without explicitly
+ using `mode=SHORTEST` has been deprecated (`#4685`_). The strict mode where lengths
+ must match will be the default mode in the future.
+
+- Various utility functions in the `robot.utils` package, including the whole
+ Python 2/3 compatibility layer, that are no longer used by Robot Framework itself
+ have been deprecated (`#4501`_). If you need some of these utils, you can copy
+ their code to your own tool or library. This change may affect existing
+ libraries and tools in the ecosystem.
+
+- `case_insensitive` and `whitespace_insensitive` arguments used by some
+ Collections and String library keywords have been deprecated in favor of
+ `ignore_case` and `ignore_whitespace`. The new arguments were added for
+ consistency reasons (`#4954`_) and the old arguments will continue to work
+ for the time being.
+
+- Passing time as milliseconds to the `elapsed_time_to_string` utility function
+ has been deprecated (`#4862`_).
+
+Acknowledgements
+================
+
+Robot Framework development is sponsored by the `Robot Framework Foundation`_
+and its over 60 member organizations. If your organization is using Robot Framework
+and benefiting from it, consider joining the foundation to support its
+development as well.
+
+Robot Framework 7.0 team funded by the foundation consists of
+`Pekka Klärck `_ and
+`Janne Härkönen `_ (part time).
+In addition to work done by them, the community has provided some great contributions:
+
+- `Ygor Pontelo `__ added async support to the
+ dynamic and hybrid library APIs (`#4803`_) and fixed a bug with handling async
+ keywords when the whole execution is stopped gracefully (`#4808`_).
+
+- `Topi 'top1' Tuulensuu `__ fixed a performance regression
+ when using `Run Keyword` so that the name of the executed keyword contains a variable
+ (`#4659`_).
+
+- `Robin `__ added type hints to modules that
+ did not yet have them under the public `robot.api` package (`#4841`_).
+
+- `Mark Moberts `__ added case-insensitive list and
+ dictionary comparison support to the Collections library (`#4343`_).
+
+- `Daniel Biehl `__ enhanced performance of traversing
+ the parsing model using `ModelVisitor` (`#4934`_).
+
+- `René `__ added return type information to Libdoc's
+ HTML output (`#3017`_).
+
+Big thanks to Robot Framework Foundation, to community members listed above, and to
+everyone else who has tested preview releases, submitted bug reports, proposed
+enhancements, debugged problems, or otherwise helped with Robot Framework 7.0
+development.
+
+| `Pekka Klärck`_
+| Robot Framework Creator
+
+Full list of fixes and enhancements
+===================================
+
+.. list-table::
+ :header-rows: 1
+
+ * - ID
+ - Type
+ - Priority
+ - Summary
+ - Added
+ * - `#3761`_
+ - enhancement
+ - critical
+ - Native `VAR` syntax to create variables inside tests and keywords
+ - alpha 1
+ * - `#4294`_
+ - enhancement
+ - critical
+ - Drop Python 3.6 and 3.7 support
+ - alpha 1
+ * - `#4710`_
+ - enhancement
+ - critical
+ - Support library keywords with both embedded and normal arguments
+ - alpha 1
+ * - `#4659`_
+ - bug
+ - high
+ - Performance regression when using `Run Keyword` and keyword name contains a variable
+ - alpha 1
+ * - `#4258`_
+ - enhancement
+ - high
+ - Change timestamps from custom strings to `datetime` in result model and to ISO 8601 format in output.xml
+ - alpha 1
+ * - `#4374`_
+ - enhancement
+ - high
+ - Support removing tags set globally by using `-tag` syntax with `[Tags]` setting
+ - alpha 1
+ * - `#4711`_
+ - enhancement
+ - high
+ - Support type aliases in formats `'list[int]'` and `'int | float'` in argument conversion
+ - alpha 1
+ * - `#4803`_
+ - enhancement
+ - high
+ - Async support to dynamic and hybrid library APIs
+ - alpha 2
+ * - `#4808`_
+ - bug
+ - medium
+ - Async keywords are not stopped when execution is stopped gracefully
+ - alpha 2
+ * - `#4859`_
+ - bug
+ - medium
+ - Parsing errors in reStructuredText files have no source
+ - alpha 1
+ * - `#4880`_
+ - bug
+ - medium
+ - Initially empty test fails even if pre-run modifier adds content to it
+ - alpha 1
+ * - `#4886`_
+ - bug
+ - medium
+ - `Set Variable If` is slow if it has several conditions
+ - alpha 1
+ * - `#4898`_
+ - bug
+ - medium
+ - Resolving special variables can fail with confusing message
+ - alpha 1
+ * - `#4915`_
+ - bug
+ - medium
+ - `cached_property` attributes are called when importing library
+ - alpha 1
+ * - `#4921`_
+ - bug
+ - medium
+ - Log levels don't work correctly with `robot:flatten`
+ - alpha 1
+ * - `#4924`_
+ - bug
+ - medium
+ - WHILE `on_limit` missing from listener v2 attributes
+ - alpha 1
+ * - `#4926`_
+ - bug
+ - medium
+ - WHILE and TRY content are not removed with `--removekeywords all`
+ - alpha 1
+ * - `#4945`_
+ - bug
+ - medium
+ - `TypedDict` with forward references do not work in argument conversion
+ - alpha 2
+ * - `#3017`_
+ - enhancement
+ - medium
+ - Add return type to Libdoc specs and HTML output
+ - alpha 2
+ * - `#4103`_
+ - enhancement
+ - medium
+ - Process: Change the default `stdin` behavior from `subprocess.PIPE` to `None`
+ - alpha 1
+ * - `#4302`_
+ - enhancement
+ - medium
+ - Remove `Reserved` library
+ - alpha 1
+ * - `#4343`_
+ - enhancement
+ - medium
+ - Collections. Support case-insensitive comparisons
+ - alpha 2
+ * - `#4375`_
+ - enhancement
+ - medium
+ - Change token type of `AS` (or `WITH NAME`) used with library imports to `Token.AS`
+ - alpha 1
+ * - `#4385`_
+ - enhancement
+ - medium
+ - Change the parsing model object produced by `Test Tags` (and `Force Tags`) to `TestTags`
+ - alpha 1
+ * - `#4432`_
+ - enhancement
+ - medium
+ - Loudly deprecate singular section headers
+ - alpha 1
+ * - `#4501`_
+ - enhancement
+ - medium
+ - Loudly deprecate old Python 2/3 compatibility layer and other deprecated utils
+ - alpha 1
+ * - `#4524`_
+ - enhancement
+ - medium
+ - Loudly deprecate variables used as embedded arguments not matching custom patterns
+ - alpha 1
+ * - `#4545`_
+ - enhancement
+ - medium
+ - Support creating assigned variable name based on another variable like `${${var}} = Keyword`
+ - alpha 1
+ * - `#4667`_
+ - enhancement
+ - medium
+ - Remove deprecated constructs from Libdoc spec files
+ - alpha 1
+ * - `#4685`_
+ - enhancement
+ - medium
+ - Deprecate `SHORTEST` mode being default with `FOR IN ZIP` loops
+ - alpha 1
+ * - `#4708`_
+ - enhancement
+ - medium
+ - Use `assing`, not `variable`, with FOR and TRY/EXCEPT model objects when referring to assigned variables
+ - alpha 1
+ * - `#4720`_
+ - enhancement
+ - medium
+ - Require `--suite parent.suite` to match the full suite name
+ - alpha 1
+ * - `#4721`_
+ - enhancement
+ - medium
+ - Change behavior of `--test` and `--include` so that they are cumulative
+ - alpha 1
+ * - `#4747`_
+ - enhancement
+ - medium
+ - Support `[Setup]` with user keywords
+ - alpha 1
+ * - `#4784`_
+ - enhancement
+ - medium
+ - Remote: Enhance `datetime`, `date` and `timedelta` conversion
+ - alpha 1
+ * - `#4841`_
+ - enhancement
+ - medium
+ - Add typing to all modules under `robot.api`
+ - alpha 2
+ * - `#4846`_
+ - enhancement
+ - medium
+ - Result model: Loudly deprecate not needed attributes and remove already deprecated ones
+ - alpha 1
+ * - `#4876`_
+ - enhancement
+ - medium
+ - Loudly deprecate `[Return]` setting
+ - alpha 1
+ * - `#4883`_
+ - enhancement
+ - medium
+ - Result model: Add `message` to keywords and control structures and remove `doc` from controls
+ - alpha 1
+ * - `#4884`_
+ - enhancement
+ - medium
+ - Result model: Enhance storing keyword name
+ - alpha 1
+ * - `#4896`_
+ - enhancement
+ - medium
+ - Support `separator=` configuration option with scalar variables in Variables section
+ - alpha 1
+ * - `#4903`_
+ - enhancement
+ - medium
+ - Support argument conversion and named arguments with dynamic variable files
+ - alpha 1
+ * - `#4905`_
+ - enhancement
+ - medium
+ - Support creating variable name based on another variable like `${${VAR}}` in Variables section
+ - alpha 1
+ * - `#4912`_
+ - enhancement
+ - medium
+ - Parsing model: Move `type` and `tokens` from `_fields` to `_attributes`
+ - alpha 1
+ * - `#4939`_
+ - enhancement
+ - medium
+ - Parsing model: Rename `Return` to `ReturnSetting` and `ReturnStatement` to `Return`
+ - alpha 2
+ * - `#4942`_
+ - enhancement
+ - medium
+ - Add public argument conversion API for libraries and other tools
+ - alpha 2
+ * - `#4952`_
+ - enhancement
+ - medium
+ - Collections: Make `ignore_order` and `ignore_keys` recursive
+ - alpha 2
+ * - `#4934`_
+ - ---
+ - medium
+ - Enhance performance of visiting parsing model
+ - alpha 1
+ * - `#4867`_
+ - bug
+ - low
+ - Original order of dictionaries is not preserved when they are pretty printed in log messages
+ - alpha 1
+ * - `#4870`_
+ - bug
+ - low
+ - User keyword teardown missing from running model JSON schema
+ - alpha 1
+ * - `#4904`_
+ - bug
+ - low
+ - Importing static variable file with arguments does not fail
+ - alpha 1
+ * - `#4913`_
+ - bug
+ - low
+ - Trace log level logs arguments twice for embedded arguments
+ - alpha 1
+ * - `#4927`_
+ - bug
+ - low
+ - WARN level missing from the log level selector in log.html
+ - alpha 1
+ * - `#4861`_
+ - enhancement
+ - low
+ - Remove deprecated `accept_plain_values` from `timestr_to_secs` utility function
+ - alpha 1
+ * - `#4862`_
+ - enhancement
+ - low
+ - Deprecate `elapsed_time_to_string` accepting time as milliseconds
+ - alpha 1
+ * - `#4864`_
+ - enhancement
+ - low
+ - Process: Make warning about processes hanging if output buffers get full more visible
+ - alpha 1
+ * - `#4885`_
+ - enhancement
+ - low
+ - Add `full_name` to replace `longname` to suite and test objects
+ - alpha 1
+ * - `#4900`_
+ - enhancement
+ - low
+ - Make keywords and control structures in log look more like original data
+ - alpha 1
+ * - `#4922`_
+ - enhancement
+ - low
+ - Change the log level of `Set Log Level` message from INFO to DEBUG
+ - alpha 1
+ * - `#4933`_
+ - enhancement
+ - low
+ - Type conversion: Ignore hyphens when matching enum members
+ - alpha 1
+ * - `#4935`_
+ - enhancement
+ - low
+ - Use `casefold`, not `lower`, when comparing strings case-insensitively
+ - alpha 1
+ * - `#4954`_
+ - enhancement
+ - low
+ - Collections and String: Add `ignore_case` as alias for `case_insensitive`
+ - alpha 2
+ * - `#4936`_
+ - enhancement
+ - ---
+ - Remove bytes support from `normalize` unitility
+ - alpha 1
+
+Altogether 63 issues. View on the `issue tracker `__.
+
+.. _#3761: https://github.com/robotframework/robotframework/issues/3761
+.. _#4294: https://github.com/robotframework/robotframework/issues/4294
+.. _#4710: https://github.com/robotframework/robotframework/issues/4710
+.. _#4659: https://github.com/robotframework/robotframework/issues/4659
+.. _#4258: https://github.com/robotframework/robotframework/issues/4258
+.. _#4374: https://github.com/robotframework/robotframework/issues/4374
+.. _#4711: https://github.com/robotframework/robotframework/issues/4711
+.. _#4803: https://github.com/robotframework/robotframework/issues/4803
+.. _#4808: https://github.com/robotframework/robotframework/issues/4808
+.. _#4859: https://github.com/robotframework/robotframework/issues/4859
+.. _#4880: https://github.com/robotframework/robotframework/issues/4880
+.. _#4886: https://github.com/robotframework/robotframework/issues/4886
+.. _#4898: https://github.com/robotframework/robotframework/issues/4898
+.. _#4915: https://github.com/robotframework/robotframework/issues/4915
+.. _#4921: https://github.com/robotframework/robotframework/issues/4921
+.. _#4924: https://github.com/robotframework/robotframework/issues/4924
+.. _#4926: https://github.com/robotframework/robotframework/issues/4926
+.. _#4945: https://github.com/robotframework/robotframework/issues/4945
+.. _#3017: https://github.com/robotframework/robotframework/issues/3017
+.. _#4103: https://github.com/robotframework/robotframework/issues/4103
+.. _#4302: https://github.com/robotframework/robotframework/issues/4302
+.. _#4343: https://github.com/robotframework/robotframework/issues/4343
+.. _#4375: https://github.com/robotframework/robotframework/issues/4375
+.. _#4385: https://github.com/robotframework/robotframework/issues/4385
+.. _#4432: https://github.com/robotframework/robotframework/issues/4432
+.. _#4501: https://github.com/robotframework/robotframework/issues/4501
+.. _#4524: https://github.com/robotframework/robotframework/issues/4524
+.. _#4545: https://github.com/robotframework/robotframework/issues/4545
+.. _#4667: https://github.com/robotframework/robotframework/issues/4667
+.. _#4685: https://github.com/robotframework/robotframework/issues/4685
+.. _#4708: https://github.com/robotframework/robotframework/issues/4708
+.. _#4720: https://github.com/robotframework/robotframework/issues/4720
+.. _#4721: https://github.com/robotframework/robotframework/issues/4721
+.. _#4747: https://github.com/robotframework/robotframework/issues/4747
+.. _#4784: https://github.com/robotframework/robotframework/issues/4784
+.. _#4841: https://github.com/robotframework/robotframework/issues/4841
+.. _#4846: https://github.com/robotframework/robotframework/issues/4846
+.. _#4876: https://github.com/robotframework/robotframework/issues/4876
+.. _#4883: https://github.com/robotframework/robotframework/issues/4883
+.. _#4884: https://github.com/robotframework/robotframework/issues/4884
+.. _#4896: https://github.com/robotframework/robotframework/issues/4896
+.. _#4903: https://github.com/robotframework/robotframework/issues/4903
+.. _#4905: https://github.com/robotframework/robotframework/issues/4905
+.. _#4912: https://github.com/robotframework/robotframework/issues/4912
+.. _#4939: https://github.com/robotframework/robotframework/issues/4939
+.. _#4942: https://github.com/robotframework/robotframework/issues/4942
+.. _#4952: https://github.com/robotframework/robotframework/issues/4952
+.. _#4934: https://github.com/robotframework/robotframework/issues/4934
+.. _#4867: https://github.com/robotframework/robotframework/issues/4867
+.. _#4870: https://github.com/robotframework/robotframework/issues/4870
+.. _#4904: https://github.com/robotframework/robotframework/issues/4904
+.. _#4913: https://github.com/robotframework/robotframework/issues/4913
+.. _#4927: https://github.com/robotframework/robotframework/issues/4927
+.. _#4861: https://github.com/robotframework/robotframework/issues/4861
+.. _#4862: https://github.com/robotframework/robotframework/issues/4862
+.. _#4864: https://github.com/robotframework/robotframework/issues/4864
+.. _#4885: https://github.com/robotframework/robotframework/issues/4885
+.. _#4900: https://github.com/robotframework/robotframework/issues/4900
+.. _#4922: https://github.com/robotframework/robotframework/issues/4922
+.. _#4933: https://github.com/robotframework/robotframework/issues/4933
+.. _#4935: https://github.com/robotframework/robotframework/issues/4935
+.. _#4954: https://github.com/robotframework/robotframework/issues/4954
+.. _#4936: https://github.com/robotframework/robotframework/issues/4936