The Veachian IRC Daemon
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


vIRCd (Veachian Internet Relay Chat Daemon) is an IRC server written in Perl (old Perl from 2001, circa version 5.6.1). As the original README states, it was a way for me to learn some Perl and do something interesting in the process. Most notably, since I developed vIRCd on Windows, I wasn't able to get threads working, so the server uses a synchronous messaging queue for handling all the input and output.

I wrote it 10 years ago in 2001, back when I was a high school freshman, and hadn't really thought about it until now when, while Googling my name, I stumbled upon this old Perl Monks thread I made about it:

Randal Schwartz (yes, that one) chided me about the post, saying the links to my personal website for a tarball of the source were pointless since the links could disappear at any moment, and that I should've made a CPAN module instead.

Good advice, but for what it's worth, I still maintain the hyperlinks to this day. And to one up that, I'm now putting the development history of vIRCd on GitHub for further posterity.

As the original README states, this project is in the public domain, so do what you will with it.

Original README:

This is the Veachian Internet Relay Chat Daemon (vIRCd), an IRC server written in Perl
simply as a proof of concept project. It was written after I discovered the Perl IRC Daemon
( and found out it didn't work on Windows. So out of
sheer boredom I wrote it. It's in no way meant to be complete or even stable. It was
just a way for me to learn more about Perl and discover a few new things along the way.

This code is being put in the public domain. You can use it for anything you want and not
worry about copyrights or anything else that might cause ya to get sued. However I'm not
responsible for anything this program does so you use it at your own risk. In other words
if you break it, you get to keep the pieces. The code is split up into different versions, 
which I simply did so I'd have something to start over on in case I totally broke the
code I was working on. The previous versions are made available so you can see how the code
evolved and to see the failed implementations of certain functions. The versions skip from 0.15
to 0.20 because I did a major code change between them. In 0.20, the numeric lookup subroutine
(send_user_msg_num) uses a hash (%numstr) instead of a big if statement, which is pretty much faster.
This was done for process_command in 0.22. Also in 0.22, %fhs was merged into %users, breaking the
serv_online() function.

vircd.motd is a semi-informative message of the day file containing some info that I decided to
throw in. data_structs.txt contains some info on the hash, but some of it may be incomplete or

Like I said this isn't meant to be stable or complete. It's just here for you to do
whatever you want with it.

Happy coding,
Jahn Veach (Veachian64)