cannot build a low distortion oscillator unless
- it uses a long time constant feedback loop (a lamp in the old designs)
There is at least one trick to bypass that inconvenient (a trick other than running open loop, like you do when you use a DAC). If you have a sinusoidal oscillator that provides both sin and cos outputs (a quadrature oscillator), you can find the amplitude (in theory) instantaneous, by analog squaring the outputs then sum them together, because sin
2+cos
2=1 at any moment during the period of an oscillation. This way you don't need to wait for the peak of an oscillation in order to measure the signal amplitude, and you don't need an integrator with a long constant time (like in the light bulb filament trick).
There were a few application notes about the method of the squared sin and cos. Unfortunately I don't know any AN by heart, but I remember there was at least one implementation example here, on the EEVblog forum:
https://www.eevblog.com/forum/projects/low-distortion-audio-oscillator-stabilized-via-trigonometric-identity/Another similar example:
https://keith-snook.info/wireless-world-articles/Wireless-World-1982/Fast%20amplitude%20stabilisation%20on%20an%20RC%20oscillator.pdf
Aside from that, when it was all analog only, there were a lot of research and neat tricks to generate low distort sinusoidal signals. One I remember is to use 2 opamps in a Wien oscillator, instead of just one opamp, in order to avoid any distortions that my be induced by the finite CMRR value of opamp.
In the 2 inverting opamps topology, both opamps were operated with the positive input at ground, so a virtually zero CMRR swing, while the version with just 1 non-inverting opamp was seeing the full amplitude swing of the generated signal at its inputs, as a common mode signal. Common mode input signals in an opamp are rejected, indeed, but this rejection is not perfect. It will add considerable distortions when we talk about distortions level in the range of -100dBc or better.
https://keith-snook.info/wireless-world-articles/Wireless-World-1981/Wien-bridge%20oscillator%20with%20low%20harmonic%20distortion.pdf
Another funny trick was to sum up the signals from different points of the oscillator (different phases), such that the 3rd harmonic (the biggest contributor to THD) was eventually cancelling out itself.
https://keith-snook.info/wireless-world-articles/Wireless-World-1982/Phase-shifting%20oscillator%20-%20Roger%20Rosens.pdf