0.17.8350: New tool introduced to Part workbench: 2D offset. It can offset planar wires.
It has two modes to offset open wires, and three join types (two of which seem to function exactly the same, though).
Supported inputs: Wire, or Compound of wires (I also have in plan to support planar faces, hope I'll do it eventually). If 'Intersection' is ticked, the wires must be on the same plane; the interference of offsets is then taken into account (like on screenshot). If not, the wires are offset completely independently, and the planes of wires may differ.
Output: Wire/compound, of Face/compound (if 'Fill' is ticked). Filling an offset when 'Intersection' is ticked is not supported yet.
This was tested on OCC 7. On older OCC, the behavior may differ. In particular, I know that Skin mode (open wire to yield open wire) is not supported.
Also, "makeOffset2D" Python method was added to Part.Shape, mirroring this functionality.
Attempting to turn a circle inside-out by offsetting it inwards by more than its radius causes a crash inside OCC. On Windows, the crashes should be handleded in release builds. But on Linux.. I don't know, it may just downright crash. So use with caution.