libmesode is a libstrophe fork.
libstrophe is a minimal XMPP library written in C. It has almost no
external dependencies, only an XML parsing library.
Change log:
Music21 v6 is OUT as v6.1.0! This represents over 500 commits over the past 14 months since v5.7 was released.
Many thanks to Jacob Tyler Walls (JTW below) who made so many contributions to the v6 branch, both big and small. Mad props and round of applause!
v6 fully supports Python 3.8 and removes support for Python 3.5. v6 will be the last major release to support Python 3.6 and we will work on Python 3.9 support immediately.
As with all new v.X releases of music21 there are improvements and some backwards incompatible changes (not too many)
In no particular order, here are the things to look for in the new music21 v6:
Type hints throughout music21 -- when you program with a sophisticated IDE you will be able to see what is returned and required as attributes in much of music21.
music21 is no longer packaged with external modules; these will be installed when installing music21 via pip (otherwise run pip install -r requirements.txt). Speed and security improvements come with this.
converter.parse('file.mid', quantizePost=False) will let you load in a MIDI file without any quantizing. (Thanks JTW)
Lots more values cached = faster music21; RomanNumerals in particular are over an order of magnitude faster, and Chords are faster too. If you ever have a problem, all Music21Objects have a .clearCache() function. Just add @cacheMethod as a decorator to a method and it will use the caching routine.
Intervals have been rewritten to use properties entirely. So whatever happens to an Interval, its semiSimpleNiceName (to take one of dozens of examples) will always be up to date. Intervals use Specifiers that are enums like interval. Specifier.PERFECT instead of inscrutable numbers. (those inscrutable numbers still work though) Specifiers are more than just standard enums -- they can invert themselves, do semitonesAboveMajor() etc. Interval geeks rejoice.
Intervals given a noteStart and a name will generate noteEnd automagically. They also get transposePitch() improvements along the way.
KeySignature gets transposePitchFromC() which takes a pitch in C major and returns the pitch in the same scale degree in this key..
Voices with gaps in them work way better in MusicXML. Repeat endings with multiple numbers like 1,2 r/t with musicxml (JTW)
TSV files which encode harmonic analysis can now be parsed (Thanks Mark Gotham)
Humdrum harm spines parse now, giving another way of encoding harmonic analysis. (Thanks Néstor Nápoles López)
MIDI refactor: easier to subclass and extend and with many docs -- keeps a clear distinction between strings and bytes. MIDI values are all Enum classes (but IntEnums so they compare well with pure numbers)
StripTies works much better thanks to JTW -- and does not filter out non-Notes anymore (technically an incompatibility, but really a bug fix). Voices, etc. don't faze .stripTies() any more. Stream.voicesToParts() also preserves more elements. Chords with some notes tied and some don't no longer get merged. Note that stripTies retainContainers defaults to True now, because getting the opposite behavior is as easy as a .flat
Internal but important: lots of parts of music21 code that used abbreviations now spell out the whole word. This is important for our friends using screen readers. While music21 will (for historical/compatibility reasons) still use camelCase for all method names, attribute names, etc., internal variables may now use underscore_case which helps with screen readers.
Stream().write('mxl') will write compressed musicxml (JTW). Or write('...', format='musicxml', compress=True)
Improvements to VoiceLeadingQuartets (thanks Ryaan Ahmed), including finding parallel intervals with octave displacement. voiceCrossing and voiceOverlap detection.
Substantial improvements to RomanText: see https://dmitri.mycpanel.princeton.edu/romantext.pdf
RomanNumerals can specify how they represent ^6 and ^7 in minor with sixthMinor and seventhMinor keywords)
OMR fixers can recognize Turns and other ornaments. More merging here to come. Thanks Janelle Sands!
Substantial improvements to beaming routines and tests (thanks Almog Cohen!)
Keys now have .deriveByDegree() like Scales, so "What minor key has scale degree 3 as B-flat?" can easily be answered.
Improvements to dotted tuplets (Almog Cohen)
Chord.name/fullName now gives better names for common chords like Major/Minor triads -- no longer relies entirely on chord.tables. But even there many improvements and spelling corrections.
Chords expose .notes to get at the notes that make up a chord, in a different way than Chord[0] or for n in Chord -- I'm still an old Perl guy, sometimes There's More Than One Way to Do It, and this way makes some things conceptually much easier and faster.
More Bach Chorale fixes from Doctor Schmidt (thanks!)
Stream.replace(recurse=True) finally works!
StringIndication, FretIndication work in musicxml (thanks Peter Mitrano)
For those who are adventurous -- intervalNetworks are now exposed on scales.
prebase.ProtoM21Object -- an idea ported back from music21j: nearly every object in music21, including all Music21Objects, inherits from this super-lightweight base class which allows for querying classes and giving consistent representations. It makes working in music21 a lot more fun.
Incompatible Changes
Stream filters now return a new StreamIterator. So old code like:
s = stream.Stream()
sIter = s.iter
sIter.getElementsByClass('Chord')
list(sIter)
should now be written as:
s = stream.Stream()
sIter = s.iter
sIter2 = sIter.getElementsByClass('Chord')
list(sIter2)
For most people using filters within a for-loop, nothing will appear to have changed.
if element in stream now only returns True if the element is actually in the Stream, not if element is equal to something in the Stream. This is not normal Python behavior for __contains__ but it is something music21 users have counted on for a decade, and now it is assured.
MIDI has been completely refactored, so if you are mucking with MIDI internals, it's going to be completely different. If you're just using converter.parse and .write('midi') it won't have changed much.
Also
Setting a pitch's accidental to a number is deprecated and to be removed soon. use b = pitch.Pitch('B4'); b.accidental = pitch.Accidental(-1).
some long deprecated functions removed, such as Stream.restoreActiveSites, Stream. _yieldReverseUpwardsSearch, common.standardDeviation (use statistics.stdev instead).
Chord sort methods no longer return the chord itself if inPlace=True
interval.convertSemitoneToSpecifierGenericMicrotone, convertSemitoneToSpecifierGeneric now return a Specifier Enum as their first value
Spelling corrections that are technically incompatible: Interval.perfectable replaces typo Interval.prefectable. Appoggiatura is spelled correctly with two-gs everywhere it's used (JTW)
stripTies(retainContainers=True) is now the default.
Half-diminished chords have ø7 etc. as their default representation.
MIDI.intsToHexString has become MIDI.intsToHexBytes which does what is says it does.
Small Changes/Bugs squashed:
A malformed spanner in musicxml will no longer crash parsing.
Tuplets are equal if their durations are equal. Better docs for duration equality.
contextSites, next, previous, and getContextByClass have a priorityTargetOnly or activeSiteOnly keyword for searching activeSite only. Speed!
From music21.X import * works much more reliably.
Bugs fixed in feature extraction of keys.
serial allows "P" or "T" to be used for transpositions
Tone-Rows give their row in the repr.
Historical tone-rows no longer have Row in their name. For instance: serial.getHistoricalRowByName('SchoenbergOp37').matrix() -- the old form still works though.
Feature extraction on empty streams (or ones that don't have instruments or something else) works properly (JTW)
Feature output formats can set .ext directly, in case you need a different extension.
viio7 can be specified as vii07
Interval: reverse=True works properly
subprocess.run is used instead of os.system for PNG generation. Thanks Uğur Güney. Fixes using musescore with music21 in Jupyter when spaces appear in filenames. (also thanks to Frank Zalkow)
Better representation for many objects
Error handling for incorrect chord abbreviation is improved. Thanks Vikram Natarajan
Librettists and lyricists can be searched in metadata. .age() works properly for living composers.
MIDI plays back properly in Jupyter again BUT also does not add a delay when writing out a file.
Voice numbers in generated musicxml are now low numbers
pitch.Accidental gets . setAttributeIndependently() in case you want something to look like a flat but only alter 0.8 semitones. (This appeared in v.5 at some point but was never announced)
Note gets a pitchChanged() method which is called by its attached pitch anytime it changes so that caches can be used. Pitch gets an informClient() method which is called anytime the pitch itself changes. There is something similar in Chords too. This squashes a lot of bugs where pitches were changing but notes/chords/scales/etc. did not act like they had changed.
makeAccidentals works properly in Voices (JTW)
MIDI parsing gets more instrument objects from more places (JTW)
zero-length objects at the end of streams were being ignored by makeNotation (JTW)
Show formats: MuseScore 3.5 compatibility. (JTW). Preview is found by default on macOS Catalina/Big Sur -- still works for older OSes. No more 'is your doc > 999 pages?' bugs!
Some Neo-Riemannian docs weren't showing (thanks Adam Spiers)
Tone profiles for key analysis have been corrected. (thanks Micah Walter)
scaleDegreeWithAlteration on Augmented 6th chords works.
.musicxml is fully recognized as a suffix.
Improvements to analysis.windowed (thanks Sandro Luck)
RepeatExpander now does nothing on a score with no repeats. Before, it crashed.
Sousa example couldn't show before (thanks David H. Gutteridge)
Verticality.removeVerticalDissonances now works (also thanks to Gutteridge)
Z-relation for 5Z37 (5Z17) was incorrect (thanks Rodrigo Balthar Furman for spotting this)
Power-users who subclass Stream to be standard storage variants: Stream().coreSelfActiveSite(el) allows for subclassing what happens when an element should normally have its activeSite set to the stream.
Lilypond output with UTF-8 works. Grace notes no longer crash Lilypond. Now that there is a 64-bit binary Mac version of Lilypond, it will not be removed from music21.
RomanNumerals compare with each other. __eq__ logically defined.
Modest performance improvements in sorting (Thanks Alexander Morgan)
Documentation and test improvements and a few bugs squashed in ABC parsing.
f-strings used throughout music21 allowing for more detailed error messages and many bugs to be detected and removed.
Deprecations
interval.Interval.convertSpecifier() deprecated. use parseSpecifier instead.
Humdrum parseData() and parseFile() are deprecated. use the general converter.parse() instead.
.editorial.misc is deprecated, just stick whatever you want on the .editorial object itself.
Gratitude
As always, I want to thank MIT, the NEH, and the Seaver Institute for supporting music21 over the years along with the community of developers who use and give back to music21.
Change the DEPENDS to BUILD_DEPENDS since it is only for test.
Upstream changes:
0.52 2019-06-16 10:10:00 MANWAR
- Applied patch provided by Matthew (Issue #25).
0.51 2019-06-15 06:30:00 MANWAR
- Now ignores .git folder (Issue #26).
0.50 2019-06-14 15:30:00 MANWAR
- Added Test::Roo::Role to the list (Issue #29).
0.49 2019-06-13 12:20:00 MANWAR
- Fixed CPANTS issue (main_module_version_matches_dist_version).
0.48 2019-05-29 11:00:00 MANWAR
- Added Test::Most to modules with strictures, #27 @robrwo
= mbed TLS 2.24.0 branch released 2020-09-01
API changes
* In the PSA API, rename the types of elliptic curve and Diffie-Hellman
group families to psa_ecc_family_t and psa_dh_family_t, in line with the
PSA Crypto API specification version 1.0.0.
Rename associated macros as well:
PSA_ECC_CURVE_xxx renamed to PSA_ECC_FAMILY_xxx
PSA_DH_GROUP_xxx renamed to PSA_DH_FAMILY_xxx
PSA_KEY_TYPE_GET_CURVE renamed to to PSA_KEY_TYPE_ECC_GET_FAMILY
PSA_KEY_TYPE_GET_GROUP renamed to PSA_KEY_TYPE_DH_GET_FAMILY
Default behavior changes
* Stop storing persistent information about externally stored keys created
through PSA Crypto with a volatile lifetime. Reported in #3288 and
contributed by Steven Cooreman in #3382.
Features
* The new function mbedtls_ecp_write_key() exports private ECC keys back to
a byte buffer. It is the inverse of the existing mbedtls_ecp_read_key().
* Support building on e2k (Elbrus) architecture: correctly enable
-Wformat-signedness, and fix the code that causes signed-one-bit-field
and sign-compare warnings. Contributed by makise-homura (Igor Molchanov)
<akemi_homura@kurisa.ch>.
Security
* Fix a vulnerability in the verification of X.509 certificates when
matching the expected common name (the cn argument of
mbedtls_x509_crt_verify()) with the actual certificate name: when the
subjecAltName extension is present, the expected name was compared to any
name in that extension regardless of its type. This means that an
attacker could for example impersonate a 4-bytes or 16-byte domain by
getting a certificate for the corresponding IPv4 or IPv6 (this would
require the attacker to control that IP address, though). Similar attacks
using other subjectAltName name types might be possible. Found and
reported by kFYatek in #3498.
* When checking X.509 CRLs, a certificate was only considered as revoked if
its revocationDate was in the past according to the local clock if
available. In particular, on builds without MBEDTLS_HAVE_TIME_DATE,
certificates were never considered as revoked. On builds with
MBEDTLS_HAVE_TIME_DATE, an attacker able to control the local clock (for
example, an untrusted OS attacking a secure enclave) could prevent
revocation of certificates via CRLs. Fixed by no longer checking the
revocationDate field, in accordance with RFC 5280. Reported by
yuemonangong in #3340. Reported independently and fixed by
Raoul Strackx and Jethro Beekman in #3433.
* In (D)TLS record decryption, when using a CBC ciphersuites without the
Encrypt-then-Mac extension, use constant code flow memory access patterns
to extract and check the MAC. This is an improvement to the existing
countermeasure against Lucky 13 attacks. The previous countermeasure was
effective against network-based attackers, but less so against local
attackers. The new countermeasure defends against local attackers, even
if they have access to fine-grained measurements. In particular, this
fixes a local Lucky 13 cache attack found and reported by Tuba Yavuz,
Farhaan Fowze, Ken (Yihan) Bai, Grant Hernandez, and Kevin Butler
(University of Florida) and Dave Tian (Purdue University).
* Fix side channel in RSA private key operations and static (finite-field)
Diffie-Hellman. An adversary with precise enough timing and memory access
information (typically an untrusted operating system attacking a secure
enclave) could bypass an existing counter-measure (base blinding) and
potentially fully recover the private key.
* Fix a 1-byte buffer overread in mbedtls_x509_crl_parse_der().
Credit to OSS-Fuzz for detecting the problem and to Philippe Antoine
for pinpointing the problematic code.
* Zeroising of plaintext buffers in mbedtls_ssl_read() to erase unused
application data from memory. Reported in #689 by
Johan Uppman Bruce of Sectra.
Bugfix
* Library files installed after a CMake build no longer have execute
permission.
* Use local labels in mbedtls_padlock_has_support() to fix an invalid symbol
redefinition if the function is inlined.
Reported in #3451 and fix contributed in #3452 by okhowang.
* Fix the endianness of Curve25519 keys imported/exported through the PSA
APIs. psa_import_key and psa_export_key will now correctly expect/output
Montgomery keys in little-endian as defined by RFC7748. Contributed by
Steven Cooreman in #3425.
* Fix build errors when the only enabled elliptic curves are Montgomery
curves. Raised by signpainter in #941 and by Taiki-San in #1412. This
also fixes missing declarations reported by Steven Cooreman in #1147.
* Fix self-test failure when the only enabled short Weierstrass elliptic
curve is secp192k1. Fixes#2017.
* PSA key import will now correctly import a Curve25519/Curve448 public key
instead of erroring out. Contributed by Steven Cooreman in #3492.
* Use arc4random_buf on NetBSD instead of rand implementation with cyclical
lower bits. Fix contributed in #3540.
* Fix a memory leak in mbedtls_md_setup() when using HMAC under low memory
conditions. Reported and fix suggested by Guido Vranken in #3486.
* Fix bug in redirection of unit test outputs on platforms where stdout is
defined as a macro. First reported in #2311 and fix contributed in #3528.
Changes
* Only pass -Wformat-signedness to versions of GCC that support it. Reported
in #3478 and fix contributed in #3479 by okhowang.
* Reduce the stack consumption of mbedtls_x509write_csr_der() which
previously could lead to stack overflow on constrained devices.
Contributed by Doru Gucea and Simon Leet in #3464.
* Undefine the ASSERT macro before defining it locally, in case it is defined
in a platform header. Contributed by Abdelatif Guettouche in #3557.
* Update copyright notices to use Linux Foundation guidance. As a result,
the copyright of contributors other than Arm is now acknowledged, and the
years of publishing are no longer tracked in the source files. This also
eliminates the need for the lines declaring the files to be part of
MbedTLS. Fixes#3457.
* Add the command line parameter key_pwd to the ssl_client2 and ssl_server2
example applications which allows to provide a password for the key file
specified through the existing key_file argument. This allows the use of
these applications with password-protected key files. Analogously but for
ssl_server2 only, add the command line parameter key_pwd2 which allows to
set a password for the key file provided through the existing key_file2
argument.
Version 2.3.3
-------------
Released 2020-07-30
- This release includes the translation files that were missing in the
2.3.2 release. :issue:`641`
Version 2.3.2
-------------
Released 2020-07-29
- Fixed a bug with :class:`~fields.SelectField` choices shortcut at
form submission. :pr:`598, 639`
No changelog provided by upstream, main changes since 1.4.7 based on commit
messages: add support for generic phpass (Wordpress, Drupal, PHPBB3), bug fixes.
Still works as badly as before:
t/00_basic.t .... Failed 3/5 subtests
t/01_unblock.t .. Failed 8/12 subtests
6.57 Wed Jul 29 15:08:44 CEST 2020
- override AnyEvent condvar methods "properly", as AnyEvent
has support for pluggable condvars since 2011. This also
avoids problems with recursive waits by avoiding to mix
impl methods with coro code.
- allow rouse_wait to be called in a different thread.
- slightly clarify rouse_cb/rouse_wait documentation.
- slightly improve rouse callback performance and memory usage.
- try to report correct calller when throwing exception in
on $condvar->recv, not a useless line in Coro::AnyEvent.
6.56 Thu Feb 20 19:40:07 CET 2020
- Coro::EV::time*once functions used ev_once, which is not cancelable.
This could cause problems due to I/O watchers not being stopped up
on exceptions/cancellation.
6.55 Fri Jul 19 17:28:09 CEST 2019
- Coro::RWLock woke up only one reader instead of all after a wrlock
(analyzed and patch by Maxim Skorobogatov).
- slightly improved documentation of Coro::RWLock and RWLock testcase.
- quickly (re)-ported to minix 3.3 before minix crashed again.
1.19.1 - 2020-02-16
-------------------
* docs: Add moderngl in the integration section. :pr:`174` (:user:`Einar Forselv <einarf>`)
* Support os.PathLike with PyPy3 >= 7.3.0
1.19.0 - 2020-01-23
-------------------
* Python 2 is no longer supported :pr:`172`
* Add machine-readable license statement :pr:`158` (:user:`Maxim Ivanov <ulidtko>`)
* travis-ci: Manually set sysroot so correct SDK is used (:user:`Stuart Axon <stuaxo>`)
* Support Python 3.8 on Windows (because of DLL lookup changes)
* Fix wrong type for set_dash() offset parameter in the docs/types.