In this paper, we propose a novel checkpoint-based multi-versioning concurrency control system (CMS) for software transactional memory (STM). A checkpoint is defined to refer a set of versions. CMS maintains a list of live read-only transactions for every checkpoint. An appropriate object versioning technique decides on how many older versions are to be kept or to be removed. Moreover, the proposed method does not require any global synchronization point, such as centralized logical clock for versioning. Due to its efficient garbage-collecting mechanism, CMS is suitable for both read and write-dominated workload. We formally prove that CMS complies useless-prefix garbage collection (UP-GC). On the basis of number of memory accesses for searching consistent version, CMS performs better in comparison with conventional multi-version permissive STM. © Springer Nature Singapore Pte Ltd. 2018.