Latest 1.0.2
License MIT
Platforms osx 10.9, ios 8.0, watchos 2.0, tvos 9.0, requires ARC

Travis CI
Code coverage status
Carthage compatible
CocoaPods Platform
Swift 4.1

SMLib is a small library which implements SuperMemo SM2 Algorithm.

  1. Requirements
  2. Integration
  3. Usage
  4. Contributions
  5. License


  • iOS 8.0+ | macOS 10.10+ | tvOS 9.0+ | watchOS 2.0+
  • Xcode 9+


CocoaPods (iOS 8+, OS X 10.9+)

You can use CocoaPods to install SMLibby adding it to your Podfile:

platform :ios, '8.0'

target 'MyApp' do
    pod 'SMLib'

Note that this requires CocoaPods version 36, and your iOS deployment target to be at least 8.0:

Carthage (iOS 8+, OS X 10.9+)

You can use Carthage to install SMLib by adding it to your Cartfile:

github "tosbaha/SMLib"

Swift Package Manager

You can use The Swift Package Manager to install SMLib by adding the proper description to your Package.swift file:

import PackageDescription

let package = Package(
    name: "YOUR_PROJECT_NAME",
    targets: [],
    dependencies: [
        .Package(url: "", majorVersion: 1),

Note that the Swift Package Manager is still in early design and development, for more information checkout its GitHub Page


import SMLib

let card = Flashcard(front: "Front", back: "Back")
let flashcardgrade = Grade.pass
let engine = SM2Engine()
let gradedCard = engine.gradeFlashcard(flashcard: card, grade: flashcardgrade, currentDatetime: NSDate().timeIntervalSince1970)

Please check Tests,Example and SuperMemo SM2 Algorithm page for the details of the algorithm.


Contributions are welcome! Feel free to submit a pull request.



SMLib is released under the MIT license. See LICENSE for details.

Latest podspec

    "name": "SMLib",
    "version": "1.0.2",
    "summary": "SuperMemo 2 Algorithm",
    "homepage": "",
    "license": {
        "type": "MIT"
    "authors": {
        "tosbaha": "[email protected]"
    "requires_arc": true,
    "platforms": {
        "osx": "10.9",
        "ios": "8.0",
        "watchos": "2.0",
        "tvos": "9.0"
    "source": {
        "git": "",
        "tag": "1.0.2"
    "source_files": "Source/*.swift",
    "pod_target_xcconfig": {
        "SWIFT_VERSION": "4.1"

Pin It on Pinterest

Share This