def evolve_genomes(rng, pop, params, recorder=None):
    """
    Evolve a population without tree sequence recordings.  In other words,
    complete genomes must be simulated and tracked.

    :param rng: random number generator
    :type rng: :class:`fwdpy11.GSLrng`
    :param pop: A population
    :type pop: :class:`fwdpy11.DiploidPopulation`
    :param params: simulation parameters
    :type params: :class:`fwdpy11.ModelParams`
    :param recorder: (None) A temporal sampler/data recorder.
    :type recorder: callable

    .. note::
        If recorder is None,
        then :class:`fwdpy11.RecordNothing` will be used.

    """
    import warnings
    warnings.warn(
        'Simulation without tree sequences is being considered for deprecation!'
        , PendingDeprecationWarning)
    with warnings.catch_warnings():
        warnings.simplefilter('ignore')
        params.validate()
    from ._fwdpy11 import MutationRegions
    from ._fwdpy11 import evolve_without_tree_sequences
    from ._fwdpy11 import dispatch_create_GeneticMap
    pneutral = 0.0
    if params.mutrate_n + params.mutrate_s > 0.0:
        pneutral = params.mutrate_n / (params.mutrate_n + params.mutrate_s)
    mm = MutationRegions.create(pneutral, params.nregions, params.sregions)
    rm = dispatch_create_GeneticMap(params.recrate, params.recregions)
    if recorder is None:
        from ._fwdpy11 import RecordNothing
        recorder = RecordNothing()
    evolve_without_tree_sequences(rng, pop, params.popsizes, params.
        mutrate_n, params.mutrate_s, mm, rm, params.gvalue, recorder,
        params.pself, params.prune_selected)
