Releases: vampirc/vampirc-uci
Releases · vampirc/vampirc-uci
v0.11.1
New in 0.11.1
- Improved
parse_with_unknown(&str)
so that it correctly recognizes as much of input as possible. For example, whereas
earlier the inputuci\ndebug on\nucinewgame\nabc\nstop\nquit
would be returned as a singleUci::Unknown
message, the
improved grammar support will return six separate messages, five of which will be proper UCI messages, while wrapping
'abc' intoUci::Unknown
. - A fix for incorrect serialization to string of the
btime
parameter, thanks to @analog_hors. - Support for the chess crate v. 3.2.0.
v0.11.0
New in 0.11.0
- Support for negative times, such as negative time left and time increment, as discussed in
vampirc-uci doesn't recognize negative times #16.
To support negative durations, the representation of millisecond-based time quantities has been switched
from Rust standard library'sstd::time::Duration
to the chrono crate's
chrono::Duration
(doc). This is an API-breaking change, hence the version increase. - Fix for vampric-uci-19, a sometimes incorrect parsing of the
go
message.
v0.10.1
New in 0.10.1
- Added the
parse_one(&str)
method that parses and returns a single command, to be used in a loop
that reads fromstdin
or otherBufReader
. See example above. - Changed the internal representation of time parameters from
u64
intostd::time::Duration
(breaking
change). - Relaxed grammar rules now allow that the last command sent to
parse()
or friends doesn't need to
have a newline terminator. This allows for parsing of, among others, a single command read in a loop from
stdin::io::stdin().lock().lines()
, which strips the newline characters from the end -
see vampirc-uci-14. - Marked the
UciMessage::direction(&self)
method as public.
v0.9.0
New in 0.9
- (Optional) integration with chess crate (see below).
- Removed the explicit Safe and Sync implementations.
This library (optionally) integrates with the chess crate. First, include the
vampirc-uci
crate into your project with the chess
feature:
[dependencies.vampirc_uci]
version = "0.9"
features = ["chess"]
This will cause the vampirc_uci's internal representation of moves, squares and pieces to be replaced with chess
crate's representation of those concepts. Full table below:
vampirc_uci 's representation | chess' representation |
---|---|
vampirc_uci::UciSquare |
chess::Square |
vampirc_uci::UciPiece |
chess::Piece |
vampirc_uci::UciMove |
chess::ChessMove |
WARNING
chess
is a fairly heavy create with some heavy dependencies, so probably only use the integration feature if you're
building your own chess engine or tooling with it.
v0.8.3
New in 0.8.3
- Added the
UciMessage::info_string() utility function
. - Allowed the empty
go
command (see Parser cannot parse "go\n").
v0.8.2
New in 0.8.2
- Added
ByteVecUciMessage
as aUciMessage
wrapper that keeps the serialized form of the message in the struct as a byte Vector. Useful if
you need to serialize the same message multiple types or supportAsRef<[u8]>
trait for funnelling the messages into afutures::Sink
or
something. - Modifications for integration with async async-std based vampirc-io.
v0.8.1
v0.8.0
New in 0.8.0
- Support for parsing of the
info
message, with the UciAttributeInfo enum representing all 17 types of messages described by the UCI documentation, as well as any other info message via the Any variant.
vampirc-uci 0.7.0
Features support for parsing all GUI-bound messages, except for info and option.
vampirc-uci 0.5.0
The initial release with support for parsing and serializing engine-bound UCI messages.
To use the library, declare a dependency on the rust crate.