Instructables user laserjocky built this function generator for a term project in school. It’s capable of producing a square, triangle, and approximate sine wave up to a frequency of around 300kHz.
Op-amps are designed with negative feedback in mind and are typically slower, but they can be used for making voltage comparisons. I chose to use TL08x series op amps because they’re cheap, much better than 741s, have a relatively high slew rate (speed), and have JFET inputs (high input impedance), so they’re really the perfect hobbyist op-amp. I’ve tested this basic circuit up to frequencies of about 350kHz with pretty good results, but the signal does begin to break down somewhere around 500KHz. The op-amp just isn’t fast enough. The oscillator itself could be improved with a high speed comparator, but this improvement would be lost later on down the line in the function generator so I chose to just use the op-amp.