If the file system implements copy-on-write, wouldn't a hard link even preserve the original file if the file is edited through the original inode?
Copy-on-write and hard links are different things. A file clone would, though (as in cp --reflink).
So if I understand correctly, copy-on-write is implemented using hard links, but the existence of hard links alone doesn't constitute CoW.
You can also have hard links on non CoW filesystems (eg ext3). I assume hard links exists on most filesystems
Where there is a filename there is a hard link, so that's true in a trivial sense.
Right, indeed. I guess I was thinking about the functionality of having multiple hard links point to the same “file” (inode)
Now we could dig into "What is the fastest way to make a symlink?"
The symlink() system call. I can't think of any other way, actually.
Well, one would start from the symlink libc call, then as you say move on to the system call, then analyze the system call for "redundant" operations (libc calls usually have many, kernel calls much fewer - who needs error checking if all we care is speed?). Then compare it with non-portable raw fs modifications of a chosen filesystem. I bet there could be some tiny gains at each stage.