Session is a project mainly written in ..., it's free.
Git mirror of Emacs session project
When you start Emacs, package Session restores various variables (e.g., input histories) from your last session. It also provides a menu containing recently changed/visited files and restores the places (e.g., point) of such a file when you revisit it.
Files in the distribution (top level directory "session"):