```python
def newer_release(a: str, b: str) -> int:
    if a == b:
        return 0

    def parse_version(version: str):
        parts = version.split('-')
        major_minor = parts[0].split('.')
        major = int(major_minor[0])
        minor = int(major_minor[1])
        channel_build = None
        if len(parts) > 1:
            channel, build = parts[1].split('.')
            channel_order = {'dev': 1, 'alpha': 2, 'beta': 3, 'rc': 4}
            channel_index = channel_order.get(channel)
            if channel_index is not None:
                build_number = int(build)
                channel_build = (channel_index, build_number)
        return major, minor, channel_build

    a_parsed = parse_version(a)
    b_parsed = parse_version(b)

    if a_parsed < b_parsed:
        return -1
    elif a_parsed > b_parsed:
        return 1
    else:
        return 0
```