0.9.x → 0.10.x

This release reworked the SOME/IP type system, socket multicast configuration, SD timing units, and TSN shaping. There are no error IDs in this range — failures surface as PydanticCustomError typed minor/major/fatal.

Breaking — YAML schema

SOME/IP parameter type → datatype (nested object)

The bare datatype literal type on a SOMEIPParameter became a nested datatype object. This affects every parameter of events, fields, and method input_parameters/output_parameters.

# before (0.9.x)
parameters:
  - name: InterfaceVersion_Param
    type: uint8

# after (0.10.x)
parameters:
  - name: InterfaceVersion_Param
    datatype:
      type: uint8

Fails as: the old type: key is unexpected and rejected (extra=forbid).

Signed-integer datatypes renamed sint* → int*

SInt8/16/32/64 became Int8/16/32/64 and the YAML type literal changed sint8/16/32/64 → int8/16/32/64. Applies wherever a datatype literal is used (parameters, union members, enum base_type, method args). Unsigned uint*, float32/64, boolean are unchanged.

Socket container vlan_name → vlan_id

SocketContainer field vlan_name: str was renamed and re-typed to vlan_id: int. The value must now be the numeric VLAN ID matching a VirtualControllerInterface.vlanid.

# before
vlan_name: hpc_c1_i1_viface1
sockets: [ ... ]

# after
vlan_id: 20
sockets: [ ... ]

Socket multicast / endpoint configuration rework

Sockets gained endpoint_type (unicast | multicast) and multicast_tx (list of multicast IP strings). Per-deployment multicast (driven by SOMEIPServiceDeployment.find_service_multicast) was removed; multicast TX is now declared on the socket itself.

# before
- name: sd_multicast_socket
  endpoint_address: 10.0.10.5
  port_no: 30490
  protocol: udp
  deployments:
    - deployment_type: someip_sd
      multicast:
        ip_address: 224.244.224.245
        port: 30490
        ip_ttl: 1

# after
- name: sd_multicast_socket
  endpoint_address: 10.0.20.5
  endpoint_type: multicast
  port_no: 30490
  protocol: udp
  multicast_tx: [224.244.224.245]
  deployments:
    - deployment_type: someip_sd
      multicast:
        ip_address: 224.244.224.245
        port: 30490
        ip_ttl: 1

The old per-deployment find_service_multicast / derived multicast config is rejected.

FLYNCTopology.multicast_paths removed

The multicast_paths field on the (then) SystemTopology was removed and topology/multicast_paths.flync.yaml is now ignored as an unrelated file (the loader drops unrelated docs with a warning). Multicast routing is now computed automatically from socket multicast_tx lists plus the virtual-interface multicast addresses.

action:

delete topology/multicast_paths.flync.yaml from your repositories.

SD timings: float (seconds) → int (milliseconds), TTL defaults changed

SDTimings fields changed from float seconds to int milliseconds (e.g. 0.050 → 50). Defaults shifted to ms: offer_ttl 3 → 3000, subscribe_ttl 3 → 3000, offer_cyclic_delay 1 → 1000.

# before
initial_delay_min: 0.050
repetitions_base_delay: 0.300
offer_ttl: 3

# after
initial_delay_min: 50
repetitions_base_delay: 300
offer_ttl: 3000

Service keying by (id, major_version); provider version fields required

Services are now keyed by (id, major_version) instead of id alone; deployments are resolved by id and major version, so a version mismatch is no longer silently tolerated. A provider deployment now requires both major_version and minor_version; a consumer deployment requires major_version > 0. Omitted/zero versions fail validation.

TSN: prio → filter_priority; ChildClass.priority required

HTBFilter.prio was renamed filter_priority (old key rejected). ChildClass gained a required priority: int, and child_classes must be a real list.

# before
filters:
  - prio: 1

# after
filters:
  - filter_priority: 1
child_classes: []

Phy MII discriminator lowercased

MII.type changed from "MII" to "mii". Configs using type: MII (uppercase) no longer match the discriminated union.

Breaking — Python API

SOME/IP datatypes moved out of flync.core.datatypes

The SOME/IP datatype modules (array, bitfield, enum, primitive, string, struct, typedef, union) were deleted from flync.core.datatypes and moved to flync.model.flync_4_someip.someip_datatypes (the new home of AllTypes).

# before
from flync.core.datatypes import SInt8, UInt8, Enum, Struct, ArrayType, AllTypes
# after
from flync.model.flync_4_someip.someip_datatypes import Int8, UInt8, Enum, Struct, ArrayType, AllTypes

In flync.core.datatypes.macaddress: UnicastMACAddressEntry → MACAddressUnicast and MulticastMACAddressEntry → MACAddressMulticast (these are still re-exported from core.datatypes, but the class names changed).

Additive (0.10.x)

  • Socket.endpoint_type and Socket.multicast_tx (see breaking §5 above).

  • SOMEIPServiceInterface.someip_timing profiles: someip_timing: <profile_id> on events/fields (event_default / field_default) plus the SOMEIPFieldTimings class.

  • e2e on SOME/IP events is now concrete: e2e: {profile: AUTOSAR_Profile_4, data_id: ...}.

  • Datatype growth: Struct/Array gain bit_alignment (8/16/32/64/128/256) and length_of_length_field (0/8/16/32); Typedef added to AllTypes; enum duplicate / out-of-range validators.

  • New ImpliedStrategy.FILE_NAME and the new flync.core.annotations.reference.Reference annotation.

  • SDK: many new public helpers for LSP integration (safe_load_workspace, load_errors, load_model, get_object, list_objects, …).