All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.19.0 - 2024-08-30
-
update clients' implementation to not use
RefCell
, to make themSend
. Now async clients can be used in async blocks that spawn tasks, e.g.,tokio::spawn
.This change closes #5. Thanks @sophacles for reporting this issue.
0.18.0 - 2024-07-12
- do not require
rustfmt
in the build script. Make the code formatting step a best-effort. This allows buildingrsdns
on toolchains withoutrustfmt
installed.
0.17.0 - 2024-01-19
This is a small but breaking change that cleans up dependencies and features.
- bump the MSRV to
rustc 1.70.0
- upgrade to
smol v2
- cleanup crate features; optional dependencies
tokio
,async-std
,smol
andsmol-timeout
are not crate features anymore. They were never meant to be used as features. Now cargo provides a means to be explicit about which optional dependency is also a feature, and which is not.
0.16.0 - 2023-10-21
This is a refactoring release which removes some duplication in rsdns
types.
For example, till now rsdns
had two types for RCLASS - constants::Class
and
message::ClassValue
. This release removes such duplication by introducing a
new non-enum type records::Class
.
Class
,Type
,RCode
, andOpCode
have an implementation ofFromStr
which also recognizes generic values as specified by RFC 3597 section 5 for unknown classes and types
- the MSRV is
1.65
now - add new type
records::Class
to replaceconstants::Class
andmessage::ClassValue
- add new type
records::Type
to replaceconstants::Type
andmessage::TypeValue
- add new type
message::OpCode
to replaceconstants::OpCode
andmessage::OpCodeValue
- add new type
message::RCode
to replaceconstants::RCode
andmessage::RCodeValue
- move
constants::RecordsSection
intomessage
module - fix
clippy
issues in test code - fix
clippy::redundant_as_str
warning
0.15.0 - 2023-04-08
This is a small maintenance release with updated dependencies and MSRV.
- the MSRV is
1.63
now - upgrade to
tera v1.18.1
- upgrade to
socket v0.5.1
0.14.0 - 2022-12-23
This is a maintenance release with small clippy fixes and updated MSRV.
- the MSRV is
1.60
now - upgraded the build dependencies to
tera v0.17.1
clippy::needless-borrow
warningclippy::bool_to_int_with_if
warningclippy::uninlined_format_args
warning
0.13.2 - 2022-12-23 [YANKED]
This is a maintenance release with small clippy fixes and updated MSRV.
- the MSRV is
1.60
now
clippy::needless-borrow
warningclippy::bool_to_int_with_if
warningclippy::uninlined_format_args
warning
0.13.1 - 2022-07-30
- upgrade the
tera
requirement tov1.16.0
, enable default features oftera
and do not use tilde requirement strategy. This is to allow more flexibility when upgradingtera
in consumer crates.
0.13.0 - 2022-04-28
- add support for the underscore character
_
in domain names. Now domains like_sub._example.com
are not rejected. The underscore character, despite not being allowed by RFC 1035, is very common in domain names. It is forbidden in hostnames, but DNS is not built for hostnames only. This change is made as a first step towards full support of RFC 2181 section 11.
0.12.1 - 2022-04-16
This is a small maintenance release that fixes clippy issues to allow clean
build of rsdns with the latest beta
toolchain.
- fix
clippy::ptr-arg
error - fix
clippy::await_holding_refcell_ref
warning
0.12.0 - 2022-01-14
This is a small maintenance release, to allow building rsdns with the latest
nightly
toolchain.
- fix
clippy::single_char_pattern
warning - fix
clippy::return-self-not-must-use
warning. This change may affect compilation of a user-crate, thus rsdns bumps the minor version in this release.
0.11.1 - 2021-11-20
- fix compilation warnings when compiled without
net-*
features
0.11.0 - 2021-11-19
- implement EDNS0 support RFC 2671, RFC 6891. From now on DNS responses longer than 512 bytes can be received over UDP.
- enable EDNS in default
ClientConfig
with parametersversion: 0
andudp_payload_size: 1232
.
- remove
Error::NoNameservers
andError::NoBuffer
in favor of the genericError::BadParam
.
0.10.0 - 2021-11-13
- upgrade to
tera v0.15.0
, asv0.13.0
andv0.14.0
were yanked
0.9.0 - 2021-11-12
-
fixed a bug in encoding of the root DNS zone
.
Previously, an attempt to query the root zone failed because the
.
query name was considered invalid.
- clients allocate the incoming message buffer once (in constructor) instead of on every call to
query_rrset
- add
ClientConfig::buffer_size
configuration option. It controls the size of the internal buffer allocated by clients.
0.8.0 - 2021-10-22
This release completes the two-step transition from RecordsReader
to the new
MessageReader
. Additionally, this release makes the transition to Rust 2021
.
MessageReader
is the new and recommended primitive for parsing messages. It is very customizable and fast.
Error::MessageWithoutQuestion
was replaced withError::BadQuestionsCount
- following the transition to
Rust 2021
the minimum supported rust version was raised to1.56
(MSRV 1.56
)
RecordsReader
was removed in favor of the newMessageReader
MessageIterator::question_ref
,MessageIterator::records_reader
andMessageIterator::records_reader_for
were removed
0.7.0 - 2021-10-14
This is a very small release done in preparation for changing the MessageReader
API in a future release. Specifically, current RecordsReader
is going to become,
after some modifications, the future MessageReader
.
To reduce the impact on user applications, this release renames MessageReader
to
MessageIterator
. MessageIterator
will continue with the iterator-based approach
for reading message parts, i.e. MessageIterator::questions
and MessageIterator::records
.
However, in a following release, MessageIterator::records_reader
and
MessageIterator::records_reader_for
methods will be removed in favor of using
the revamped MessageReader
.
- refactor
MessageReader
to stop usingRefCell
for section offsets. - rename
MessageReader
toMessageIterator
in preparation for transformingRecordsReader
into a full-fledged message reader
0.6.0 - 2021-10-01
- add
NameRef
- for efficient comparison of encoded domain names - add
RecordsReader
- a flexible and more efficient reader of resource records
- implement the
Debug
trait onMessageReader
- make all public methods of
MessageReader
to beinline
- reimplement
RecordSet::from_msg
withRecordsReader
. Benchmarks show the new implementation is~35%
faster.
0.5.0 - 2021-09-10
- define rsdns as DNS Client instead of DNS Stub Resolver.
The term Resolver may be confused with a system-resolver (e.g.
systemd-resolved
), which rsdns is not. A more accurate definition for rsdns is DNS Client. A fully featured Resolver can be build above rsdns. - rename the
resolvers
module toclients
- rename
resolvers::ResolverConfig
toclients::ClientConfig
- rename
resolvers::*::Resolver
toclients::*::Client
- reimplement
ClassValue
,OpCodeValue
,RCodeValue
andTypeValue
as new types
0.4.1 - 2021-09-04
- fix documentation
0.4.0 - 2021-09-04
- add the
DName
marker-trait, for domain name types who own the domain name bytes - add the
names
module for domain name types - implement the
Default
trait onResolverConfig
- starting from this release the tags are prefixed with
v
. Old tags were adjusted accordingly. - rename
Unrecognized*
errors toUnknown*
, for compatibility with the language used in RFCs - rename
RType
toType
andRClass
toClass
. These enums are used not only for records now, so theR
prefix is obsolete. - rename
RecordType
toTypeValue
andRecordClass
toClassValue
. These types are relevant not only for records, so theRecord
prefix is obsolete. - rename
OperationCode
toOpCodeValue
, for consistency with the rest of enum and value types - move
Name
andInlineName
structs to the newly addednames
module - rename
ResolverConfig::new
toResolverConfig::with_nameserver
.ResolverConfig::new
returns the default configuration now, without specifying a nameserver.
- remove
ProtocolStrategy::Default
.ProtocolStrategy::Udp
is now the default strategy in resolver configuration.
0.3.0 - 2021-08-13
- add a link to ch4 in README
- support leading digits in domain name labels
RFC 1101
0.2.0 - 2021-08-12
- fix
Display
trait implementation. Padding, alignment and fill specifiers are supported now:println!("{:+>32}", name)
- update dependencies to be stricter, using tilde specification
- cleanup documentation
- refactor templates for readability
0.1.0 - 2021-08-06
- Initial crate release.