Greek
Improve this page! Feel free to draft a pull request on GitHub.
Search this site for more on Greek.
The Greek language is available for luatex, pdftex, and xetex.
Depending on your needs you may prefer the ldf file, currently
supported by Günter Milde, or the ini files.
The support for pdftex is based on the non-standard LGR encoding,
which may be a source of issues (see for example
here).
It’s strongly recommended to use xetex or luatex.
For an alternative for xetex and luatex, have a look at
xgreek.
As ldf
It supports Monotonic, Polytonic and Ancient Greek, but only one at a
time. A minimal preamble with Monotonic Greek and pdftex is:
\usepackage[LGR]{fontenc}
\usepackage[greek]{babel}
With pdftex it is advisable, as in the example, to load explicitly the font
encoding (the greek style does it if necessary, but in a non-standard
way). With xetex and luatex, fontenc must not be loaded.
As ini
This method is available for xetex and luatex (it might work with
pdftex, but it has not been extensively tested). It supports
Monotonic, Polytonic and Ancient Greek, which can be used at the same
time. A minimal example with Monotonic and xetex or luatex is:
\documentclass{article}
\usepackage[greek, provide=*]{babel}
\babelfont{rm}{NewComputerModern10}
\begin{document}
Η ελληνική γλώσσα κατέχει υψηλή θέση στην ιστορία του Δυτικού κόσμου.
\end{document}

The default names for the other variants are polytonicgreek and
ancientgreek.
There is a full example in Polytonic Greek in the repository (tex, pdf):

Counters
With the ini method and if the locale has been explicitly requested,
a macro is defined, \greeknumeral{number}, which converts the number
to Ionian (alphabetic) form, as represented by the original babel
greek style, and with the same upper limit (999999). However, the
code has been rewritten from scratch, and now it’s fully expandable.
There are three macros to customize it, which are redefined with
\renewcommand:
\BabelGreekNumeralMarkerEnd: 1 argument with the generated number >999; by default it is #1ʹ.\BabelGreekNumeralMarker: 1 argument with the whole number; by default is #1, ie, do nothing, but you may add an overline.\BabelGreekNumeralMiriads: 4 arguments, with the digits above 9999, ie, 1234 if the number is 12345678 (padded with zeroes if necessary); note by default\greeknumeraldoes not accept such large numbers, but you may redefine it to use, for example, the M representation.
In the ini file itself, which means they are available even if loaded
on the fly, the following ‘locale’ counters are defined (see the
explanation in the babel manual about \localecounter and
localenumeral): lower.modern, upper.modern, lower.ancient,
upper.ancient (in Ancient Greek, only the latter). There are some
limitations, because they aren’t directly configurable and the upper
limit is 9999.
Hyphenation
Only luatex. The transform diaeresis.hyphen removes the diaeresis
above iota and upsilon if hyphenated just before. It works with the
three variants.
Transliteration
Only luatex. The transform transliteration.omega applies the
transliteration system devised by Yannis Haralambous for the Omega
system. Although the provided combinations are not exactly the same (a
few are currently missing), this transform follows its syntax: = for
the circumflex, v for digamma, and so on. For better compatibility
with Levy’s system, ~ (as ‘string’) is an alternative to =. The
character ' is tonos in Monotonic Greek, but oxia in Polytonic and
Ancient Greek.
This transliteration system does not convert the sigma at the end of a
word (on purpose). The transform sigma.final does it. To prevent the
conversion (an abbreviation, for example), write "s.
A way to make ~ a valid character for the circumflex is:
\defineshorthand{~}{\string~}
This declaration applies to the whole document, but if you prefer to preserve the default meaning in other languages, you can write:
\AddBabelHook[greek]{el-short}{afterextras}{\languageshorthands{greek}}
\defineshorthand[greek]{~}{\string~}