summaryrefslogtreecommitdiff
path: root/pod/perlhacktut.pod
Commit message (Collapse)AuthorAgeFilesLines
* Omnibus removal of register declarationsKarl Williamson2012-08-181-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This removes most register declarations in C code (and accompanying documentation) in the Perl core. Retained are those in the ext directory, Configure, and those that are associated with assembly language. See: http://stackoverflow.com/questions/314994/whats-a-good-example-of-register-variable-usage-in-c which says, in part: There is no good example of register usage when using modern compilers (read: last 10+ years) because it almost never does any good and can do some bad. When you use register, you are telling the compiler "I know how to optimize my code better than you do" which is almost never the case. One of three things can happen when you use register: The compiler ignores it, this is most likely. In this case the only harm is that you cannot take the address of the variable in the code. The compiler honors your request and as a result the code runs slower. The compiler honors your request and the code runs faster, this is the least likely scenario. Even if one compiler produces better code when you use register, there is no reason to believe another will do the same. If you have some critical code that the compiler is not optimizing well enough your best bet is probably to use assembler for that part anyway but of course do the appropriate profiling to verify the generated code is really a problem first.
* Major revision of perlhack and perlrepositoryDave Rolsky2011-02-041-0/+188
The existing perlhack is huge and takes a long time to get to key information like "how to submit a patch". It also contains a massive amount of (very useful) detail on the Perl interpreter, debugging, portability issues, and so on. Some parts of perlhack are just obsolete. For example, Larry really isn't deeply involved on p5p any more. Meanwhile, perlrepository _also_ contains a lot of useful information on patching Perl, as well as a small git tutorial focused on working with the Perl repository. Taken together, the two documents overlap and conflict with each other. This commit does the following: == Reconcile conflicts and overlaps, remove obsolete information I've separated out distinct pieces of information and organized them into individual pod files. More on that below. I've also removed anything that was obviously out of date. == Make it easier for casual contributors to contribute. The perlhack document now gets to "how to make a patch" very quickly. My assumption is that most contributors to Perl are doing something small, like fixing pod, adding a test, etc. The documentation aimed at people doing more extensive hacking is still there, but it's been moved so that it comes at the end of the document or has been moved to another document. I've made an effort to cross-reference the various documents so that nothing gets lost. == Get to the point The perlhack document had a lot of discussion of general Perl culture. I've trimmed a lot of this and moved some of it so it comes later. == Per-file summary === perlrepository.pod This is gone. Some of its content is now in perlhack. This includes the bits on writing good commit messages, how (and where) to submit a patch, etc. The rest is now called perlgit, and is _only_ a git how-to. === perlhack.pod This has been cut down quite a bit. I changed the opening so it starts with a quick guide to submitting small patches. The document covers bug reporting, the p5p list, a quick how-to on getting the source (including git, gitweb, and rsync), and a lot of general information on patching perl and running tests. Much of this material was already present, but I've done a fair amount of editing for modernization and clarity. Most of the information specific to C-level hacking has been moved to other documents. === perlsource.pod This is a guide to the Perl source tree. Most of the content was extracted from perlhack. I've edited existing content and added details on some parts of the tree that weren't covered. === perlinterp.pod This is a tour of the Perl interpreter source and a walkthrough of how it works that originally lived in perlhack. This has received very little editing. === perlhacktut.pod This is a walkthrough of creating a sample patch to the C core code that originally lived in perlhack. This has received very little editing. === perlhacktips.pod The perlhack document contained a lot of useful information on low-level hacking details like debugging, compilation issues, portability, etc. This has received very little editing. I did remove some bits on ancient stuff related to Tru64 and IRIX.