**Breaking changes**:
- The interpretation has been changed for symmetric migrations when the
`start_time` (and/or `end_time`) is not specified. Symmetric migrations are
now resolved separately for each pair in the list of participating demes.
To accommodate this semantic change, the `SymmetricMigration` class has
been removed, and symmetric migrations are always resolved into pairs of
`AsymmetricMigration` objects.
({user}`grahamgower`, {issue}`263`, {pr}`268`)
- The `size_function` field can no longer be an arbitrary string.
Only the "constant" and "exponential" strings are recognised.
({issue}`262`, {pr}`278`)
**New features**:
- The `from_ms()` function has been added to convert an ms command line
into a `Graph`.
({user}`jeromekelleher`, {user}`grahamgower`, {issue}`74`, {pr}`102`)
**Bug fixes**:
- `Graph.in_generations()` no longer changes time values for a graph
when `time_units == "generations"` and `generation_time is not None`.
({user}`grahamgower`, {issue}`273`, {pr}`274`)